71
Modelov´ an´ ı MATLABem 2 Doprovodn´ y uˇ cebn´ ı text ke cviˇ cen´ ım Plzeˇ n, Listopad 2007 Hana Kockov´ a Ludˇ ek Hynˇ ık

Mode Lovani Mat Labem 2

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

(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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

(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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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

cviceni13HBMvibraceavi
Media File (videoavi)

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References

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
  • Maticovyacute priacutestup k rešeniacute uacuteloh
    • Zadaacutevaacuteniacute - generovaacuteniacute matic
    • Sklaacutedaacuteniacute matic vyacuteber podmatic
    • Prvkoveacute a maticoveacute operace
    • Speciaacutelniacute matice
    • Priacuteklady k procviceniacute
      • Grafickeacute uzivatelskeacute rozhraniacute
        • Dalšiacute priacutekazy pro praacuteci s objekty a nastaveniacute
          • Grafickeacute okno
          • Osy
            • Uzivatelskeacute rozhraniacute
            • Uzivatelskeacute menu
            • Dialogoveacute objekty
              • Retezce A praacutece s textem
                • Spojovaacuteniacute retezcu
                • Porovnaacutevaacuteniacute retezcu
                • Vyhledaacutevaacuteniacute v retezciacutech
                • Konverze retezcu
                • Prehled dalšiacutech uzitecnyacutech funkciacute
                  • Souborovyacute vstup a vyacutestup
                    • Zaacutekladniacute praacutece se soubory
                    • Ulozeniacute a nacteniacute dat
                    • Formaacutetovaneacute cteniacute a zaacutepis
                      • Binaacuterniacute soubory
                      • Textoveacute soubory
                        • Dialogovaacute okna
                          • Analyacuteza dat a zpracovaacuteniacute signaacutelu
                            • Generovaacuteniacute signaacutelu
                            • Analyacuteza dat
                            • Zpracovaacuteniacute signaacutelu
                            • Filtry
                            • Shrnutiacute
                              • Praacutece s obraacutezky audio a video vyacutestup
                                • Praacutece s obraacutezky
                                • Zvukovyacute zaacuteznam
                                • Video
                                  • Maticovaacute analyacuteza
                                    • Maticovaacute analyacuteza
                                    • LU a QR rozklad
                                    • Riacutedkeacute matice
                                      • Numerickaacute integrace a derivace
                                        • Integrace
                                          • Funkce MATLABu
                                            • Derivace
                                              • Aproximace derivace diferencemi
                                                  • Pocaacutetecniacute uacutelohy ODR
                                                    • Obycejneacute diferenciaacutelniacute rovnice
                                                    • Numerickeacute metody pro rešeniacute ODR
                                                      • Eulerova metoda
                                                      • Metody Runge-Kuttova typu
                                                        • Pocaacutetecniacute uacuteloha pro ODR v MATLABu
                                                          • Syntaxe
                                                          • Parametry funkce
                                                          • ODE pro nonstiff problem
                                                          • ODE pro stiff problem
                                                          • ODE pro moderately stiff problem
                                                          • Volaacuteniacute ODE zobrazeniacute vyacutesledku
                                                          • Parametry integrace
                                                              • Okrajoveacute uacutelohy ODR
                                                                • Okrajoveacute uacutelohy pro obycejneacute diferenciaacutelniacute rovnice
                                                                • Metoda strelby
                                                                • Metoda konecnyacutech diferenciacute
                                                                  • Lineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • Nelineaacuterniacute ODR prvniacuteho raacutedu
                                                                  • ODR druheacuteho raacutedu
                                                                    • Funkce MATLABu pro okrajovou uacutelohu ODR
                                                                      • Parciaacutelniacute diferenciaacutelniacute rovnice
                                                                        • Metoda konecnyacutech diferenciacute
                                                                          • Explicitniacute metoda
                                                                          • Implicitniacute metoda
                                                                            • Funkce MATLABu pro parabolickou PDR
                                                                              • Metoda konecnyacutech prvku
                                                                                • Priacutekazy MATLABu
                                                                                  • Aplikace v biomechanice
                                                                                  • References