SEMESTRÁLNÍ PRÁCE Z PŘEDMĚTU MODELOVÁNÍ MATLABEM



Podobné dokumenty
Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

Doňar B., Zaplatílek K.: MATLAB - tvorba uživatelských aplikací, BEN - technická literatura, Praha, (ISBN:

PROGRAM RP56 Odvodnění pláně Příručka uživatele Základní verze 2014

Nápověda k aplikaci GraphGUI

SEMESTRÁLNÍ PRÁCE Z X37SAS Zadání č. 7

Uživatelská doumentace

PROGRAM RP45. Vytyčení podrobných bodů pokrytí. Příručka uživatele. Revize Pragoprojekt a.s

KTE / PPEL Počítačová podpora v elektrotechnice

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Cvičení software Groma základní seznámení

MS EXCEL 2010 ÚLOHY. Vytvořte tabulku podle obrázku, která bude provádět základní matematické operace se dvěma zadanými čísly a a b.

E+034 = ; = e E+034

Uživatelská příručka.!instalace!průvodce.!dialogová okna!program zevnitř

Metoda Monte Carlo a její aplikace v problematice oceňování technologií. Manuál k programu

Vyhodnocení 2D rychlostního pole metodou PIV programem Matlab (zpracoval Jan Kolínský, dle programu ing. Jana Novotného)

Lineární algebra s Matlabem cvičení 3

Programy na PODMÍNĚNÝ příkaz IF a CASE

Matematika II, úroveň A ukázkový test č. 1 (2016) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené

BALISTICKÝ MĚŘICÍ SYSTÉM

GUI APLIKACE PRO VÝUKU AUTOMATIZACE

Výkresy. Projekt SIPVZ D Modelování v SolidWorks. Autor: ing. Laďka Krejčí

Obslužný software. PAP ISO 9001

MS EXCEL 2010 ÚLOHY. Vytvořte tabulku podle obrázku, která bude provádět základní matematické operace se dvěma zadanými čísly a a b.

7. ODE a SIMULINK. Nejprve velmi jednoduchý příklad s numerických řešením. Řešme rovnici

Obsah. při vyšetření pacienta. GDT souboru do programu COSMED Omnia GDT souboru z programu COSMED Omnia a zobrazení výsledků měření v programu MEDICUS

Autorizovaný software DRUM LK 3D SOFTWARE PRO VYHODNOCENÍ MĚŘENÍ ODCHYLEK HÁZIVOSTI BUBNOVÝCH ROTAČNÍCH SOUČÁSTÍ

Stručný návod k programu Octave

Nastavení stránky : Levým tlačítkem myši kliknete v menu na Soubor a pak na Stránka. Ovládání Open Office.org Draw Ukládání dokumentu :

Cvičení 7: Delphi objekty CheckedBox, Radio- Button, EditBox

SCIA.ESA PT. Export a import souborů DWG a DXF

Matematika II, úroveň A ukázkový test č. 1 (2017) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené

Školní kolo soutěže Baltík 2009, kategorie C

Jak vložit položku do GDSN

Generování výkresové dokumentace. Autodesk INVENTOR. Ing. Richard Strnka, 2012

Nápověda ke cvičení 5

% vyhledání prvku s max. velikostí v jednotlivých sloupcích matice X

X37SGS Signály a systémy

Rasterizace je proces při kterém se vektorově definovaná grafika konvertuje na. x 2 x 1

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

výsledek 2209 y (5) (x) y (4) (x) y (3) (x) 7y (x) 20y (x) 12y(x) (horní indexy značí derivaci) pro 1. y(x) = sin2x 2. y(x) = cos2x 3.

Matematika II, úroveň A ukázkový test č. 1 (2018) 1. a) Napište postačující podmínku pro diferencovatelnost funkce n-proměnných v otevřené

pro začátečníky pro pokročilé na místě (dle požadavků zákazníka)

Základní vzorce a funkce v tabulkovém procesoru

Rozvinutí funkce do Maclaurinova rozvoje

Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem

KIV/ZIS cvičení 5. Tomáš Potužák

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

Velmi stručný návod jak dostat data z Terminálu Bloomberg do R

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ]

Excel tabulkový procesor

Co je nového 2018 R2

Obsah Přehled existujících a evidence nových klientů... 3 Přehled foto-záznamů... 4 Nahrávání foto-záznamů... 6 Analýza foto-záznamů...

UniLog-L. v0.81 návod k obsluze software. Strana 1

Téma 7: Konfigurace počítačů se systémem Windows 7 III. Téma 7: Konfigurace počítačů se systémem Windows 7 III

Zada ní 1. Semina rní pra ce z pr edme tu Matematický software (KI/MSW)

MANUÁL PROGRAMU PRO PARAMETRICKÝ VÝPOČET PRŮHYBŮ

Logické řízení výšky hladiny v nádržích

Grafické výstupy v Octave/Matlabu a GnuPlotu

AUTOMATICKÉ ZÁLOHOVÁNÍ DATABÁZE PRO SQL Express 2005

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

IBRIDGE 1.0 UŽIVATELSKÝ MANUÁL

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

Reliance 3 design OBSAH

Programátorská dokumentace

Občas je potřeba nakreslit příčky, které nejsou připojeny k obvodovým stěnám, např. tak, jako na následujícím obrázku:

Matematika I A ukázkový test 1 pro 2014/2015

Výsledný graf ukazuje následující obrázek.

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Aleš Najman [ÚLOHA 38 KONTROLA A POHONY]

Android Elizabeth. Verze: 1.1

II. Úlohy na vložené cykly a podprogramy

HVrchlík DVrchlík. Anuloid Hrana 3D síť

Tematický celek 03 - Cvičné příklady

Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.

P R OGR AM P R O NÁVRH VÝVAR U

6.1 Měsíční výkaz o výrobě elektřiny z obnovitelných zdrojů (od výrobce)

ÚLOHA 6. Úloha 6: Stěžejní body tohoto příkladu:

MATEMATIKA I - vybrané úlohy ze zkoušek v letech

SkiJo podpora pro vytyčování, řez terénem a kreslení situací

Jak se registrovat. Diagnostika Siemens online. V pravé straně obrazovky klikněte na Registrace

ZŠ ÚnO, Bratří Čapků 1332

1 Uživatelská dokumentace

zobrazuje názvy polí, vložené hodnoty jednotlivých záznamů, lze v něm zadávat data (přidávat záznamy) v návrhovém zobrazení:

Sestavy. Téma 3.3. Řešený příklad č Zadání: V databázi zkevidence.accdb vytvořte sestavu, odpovídající níže uvedenému obrázku.

Základní vzhled hlavního okna vystihuje obrázek 1.1. Popis jeho hlavních částí označených

Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Aleš Najman [ÚLOHA 22 KONTROLA A VLASTNOSTI TĚLES]

Příklad: Řešte soustavu lineárních algebraických rovnic 10x 1 + 5x 2 +70x 3 + 5x 4 + 5x 5 = 275 2x 1 + 7x 2 + 6x 3 + 9x 4 + 6x 5 = 100 8x 1 + 9x 2 +

ALGORITMIZACE PRAKTICKÉ

Vytváření projektu, operace, objektu Název v každé úrovni je možné v pravém okně kliknutím pravého tlačítka přejmenovat: Umístěné projektů.

Jeden z mírně náročnějších příkladů, zaměřený na úpravu formátu buňky a především na detailnější práci s grafem (a jeho modifikacemi).

Popis rozšířujících funkcí JScriptu

RoadPAC 2016 BETA. 1. Nový formát protokolů.

Návod na práci s katalogem konstrukcí a materiálů Obsah

Datace, popis a příklady použití

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

CZ.1.07/2.2.00/ )

Výukový materiál pro projekt Perspektiva 2010 reg. č. CZ.1.07/1.3.05/ EXCEL příklad. Ing. Jaromír Bravanský, 2010, 6 stran

Simulace. Simulace dat. Parametry

Opakování z předmětu TES

Manuál k tvorbě absolventské práce

Transkript:

SEMESTRÁLNÍ PRÁCE Z PŘEDMĚTU MODELOVÁNÍ MATLABEM Jméno: Petr Thür Os. číslo: A04236 E-mail: petr.thur@post.cz Zadání: 8-D Datum vypracování: 7. 5. 2005

Zadání: Sestavte program (funkční M-soubor) pro vykreslení funkce jedné proměnné a výpočet jejího určitého integrálu na daném intervalu. Vstupem do programu je řetězec definující danou funkci a rozsah (definiční obor). Program vykreslí zadanou funkci jedné proměnné ve zvoleném rozsahu a vyplní integrovanou plochu. Číselným výstupem bude plocha pod křivkou na daném intervalu. Vytvořte grafické uživatelské prostředí, kde bude možno zadávat jednotlivé parametry úlohy a vykreslovat výstupy. Kontrola správnosti zadaných údajů je samozřejmostí. Při zadání prázdného vstupu zvolte a použijte implicitní hodnoty. Postup řešení Nejprve bylo nutné vytvořit grafické uživatelské rozhraní (soubor gui.m) a umístit do něj všechny potřebné prvky (vstupní pole pro zadání funkce a hraničních bodů intervalu, spouštěcí tlačítko, oblast grafu, výstupní textové pole a další). Následně jsem začal vytvářet vlastní program. Na začátku je potřeba načíst hodnoty ze vstupních polí. Hodnoty zjišťuji pomocí funkce get a převedou na číslo funkcí str2num. Tato funkce vrací vektor, jehož druhá složka informuje o případné chybě při převodu, což jsem využitel při následné kontrole správnosti vstupu. Po zjištění krajních hodnot intervalu je možné vytvořit vektor vstupních hodnot (hodnoty osy x) a z nich pak vypočítat vektor funkčních hodnot (hodnoty osy y). Výpočet funkčních hodnot jsem vyřešil funkcí eval, která zároveň kontroluje správnost zadaného vstupu a při chybě vykoná řetězec zadaný jako druhý parametr. Protože plocha integrálu se vykresluje jako polygon, je nutné doplnit do vektorů ještě souřadnice posledního a prvního bodu osy x, aby mohl být útvar uzavřen a správně vykreslen. Poté se vykreslí integrovaná oblast jako barevná plocha a přes ní integrovaná funkce. Nyní zbývá vypočítat hodnotu integrálu. Výpočet jsem zajistil funkcí quad, pro její použití je však nutné vytvořit handle funkce. To se v programu provádí pomocí funkce eval a operátoru @. Handle společně s hranicemi intervalu se vládá do zmíněné funkce quad a ta vrací výslednou hodnotu určitého integrálu. Tato hodnota se následně vypíše do výstupního textového pole. Uživatelský manuál Program spusťte příkazem gui (samozřejmě ve správné pracovní složku). Zobrazí se okno programu. Nahoře jsou umístěna pole pro zadání vstupů (levá a pravá hranice intervalu, na kterém se bude funkce integrovat, dále pole pro předpis funkce). Vpravo nahoře je tlačítko Spustit, kterým se provede vykreslení a výpočet integrálu. To samé způsobí kliknutí na položku Spustit v menu okna. Při zadávání hodnot 2

pamatujte na to, že program pracuje s vektory, takže je nutné používat tečku před operátorem. Pokud je některá z hodnot špatně zadána, program zobrazí chybové hlášení a vyplní příslušné pole implicitní hodnotou. Po vykonání výpočtu se zobrazí graf funkce s vybarvenou plochou integrálu. Hranice intervalu jsou označeny svislými přerušovanými čárami. Pod grafem se zobrazí hodnota určitého integrálu funkce na zadaném intervalu a také hodnota integrálu absolutní hodnoty funkce, která charakterizuje obsah plochy vymezené grafem kolem osy x. Program ukončíte zavřením okna nebo kliknutím na položku Zavřít v menu okna. Ukázky výstupu Ukázka implicitního zadání, je nutné přičíst malé číslo, aby se předešlo dělení nulou. Program jinak nedokáže funkci zintegrovat. 3

Stejná funkce, ale na intervalu od 0 do 5. Funkce sin(x)+cos(x) na intervalu od pi/4 do pi/4. 4

Funkce x 3 na intervalu od -1 do 1. Výpis kódu soubor gui.m clear all; hlavni=figure('numbertitle','off','menubar','none','name','určitý integrál'); menu_start=uimenu('label','spustit',... 'CallBack','funkce'); menu_konec=uimenu('label','konec',... 'CallBack','delete(hlavni)'); uicontrol('units','normalized',... 'Position',[0.05,0.925,0.2,0.025],... 'Style','Text',... 'HorizontalAlignment','left',... 'String','Interval:'); interval1=uicontrol('units','normalized',... 'Position',[0.05,0.85,0.1,0.05],... 'Style','Edit',... 'HorizontalAlignment','center',... 'String','-pi/4'); interval2=uicontrol('units','normalized',... 'Position',[0.15,0.85,0.1,0.05],... 'Style','Edit',... 'HorizontalAlignment','center',... 'String','pi/4'); uicontrol('units','normalized',... 'Position',[0.315,0.925,0.22,0.025],... 'Style','Text',... 'HorizontalAlignment','left',... 'String','Funkce:'); fce=uicontrol('units','normalized',... 'Position',[0.315,0.85,0.22,0.05],... 'Style','Edit',... 'HorizontalAlignment','center',... 'String','x.*sin(1./abs(x+0.001))'); tl_spustit=uicontrol('units','normalized',... 'Position',[0.6,0.85,0.35,0.1],... 'Style','PushButton',... 'FontSize',12,... 'String','Spustit',... 'CallBack','funkce'); 5

osy=axes('units','normalized',... 'Position',[0.05,0.2,0.9,0.6]); vystup=uicontrol('units','normalized',... 'Position',[0.05,0.05,0.9,0.1],... 'Style','Text',... 'HorizontalAlignment','center',... 'FontSize',12,... 'String',''); Výpis kódu soubor funkce.m chyba=false; chyba_fce=false; [xmin,ok]=str2num(get(interval1,'string')); % pokud se vyskytla chyba pri prevodu cisla (pocatek intervalu), pak OK=0 if (OK==0) % zobrazi chybovy dialog a nastavi implicitni hodnotu na -pi/4 errordlg('zadali jste špatně interval!','chyba'); xmin=-pi/4; set(interval1,'string','-pi/4'); chyba=true; [xmax,ok]=str2num(get(interval2,'string')); % pokud se vyskytla chyba pri prevodu cisla (konec intervalu), pak OK=0 if (OK==0) % jestlize chyba nastala uz pri prevadeni pocatku intervalu, % dialog se podruhe nezobrazi if (~chyba) errordlg('zadali jste špatně interval!','chyba'); % nastavi implicitni hodnotu na pi/4 xmax=pi/4; set(interval2,'string','pi/4'); err=true; % zkopiruje hranice intervalu pro pouziti v integralu xfcemin=xmin; xfcemax=xmax; % urci delku intervalu xint=xmax-xmin; % zvetsi interval pro vykresleni grafu o 10% na kazde strane % aby to lepe vypadalo :) xmin=xmin-0.1*xint; xmax=xmax+0.1*xint; % vytvori vektor vstupnich hodnot x=linspace(xmin,xmax,1200); % naplni vektor funkcnich hodnot podle zadane fuknce eval(strcat(['y=' get(fce,'string') ';']),'chyba_fce=true;'); % pokud neni funkce zadana spravne if (chyba_fce) % zobrazi chybovy dialog % nastavi implicitni funkci na x.*sin(1./abs(x+0.001)) errordlg('zadali jste špatně funkci!','chyba'); set(fce,'string','x.*sin(1./abs(x+0.001))'); chyba=true; % vymaze graf cla(osy); % vymaze vystupni textove pole set(vystup,'string',''); % jestlize zatim nenastala zadna chyba if (~chyba) % zkopiruje potrebnou cast vstupniho vektoru xf=x(101:-100); % prida na konec koncovy a pocatecni bod intervalu xf(length(xf)+1)=xfcemax; xf(length(xf)+1)=xfcemin; 6

% zkopiruje potrebnou cast funkcnich hodnot yf=y(101:-100); % prida na konec dve nulove hodnoty pro uzavreni polygonu yf(length(yf)+1)=0; yf(length(yf)+1)=0; % zjisti minimum a maximum funkcnich hodnot a posunout o 5% % pokud jsou obe hodnoty stejnym smerem od nuly, pouzije se misto % nule blizsi hodnoty nula (aby byla videt cela plocha integralu) ymin=min([0 min(y)])-0.05; ymax=max([0 max(y)])+0.05; % zjisti rozsah funkcnich hodnot yint=ymax-ymin; % nastavi osy podle zjistenych rozmeru axis([xmin,xmax,ymin,ymax]); hold on; % vytvori vektory pro osu x axx=[xmin xmax]; axy=[0 0]; % vytvori vektory pro levou zarazku intervalu ay1x=[xfcemin xfcemin]; ay1y=[ymin ymax]; % vytvori vektory pro pravou zarazku intervalu ay2x=[xfcemax xfcemax]; ay2y=[ymin ymax]; % vykresli integral fill(xf,yf,'g','line','none'); % vykresli osu x plot(axx,axy,'k'); % vykresli zarazky plot(ay1x,ay1y,':','color',[0.5 0.5 0.5]); plot(ay2x,ay2y,':','color',[0.5 0.5 0.5]); %vykresli funkci plot(x,y,'b','linewidth',1.5); % vytvori handle pro funkci eval(strcat(['fx = @(x) ' get(fce,'string') ';'])); % spocita integral a zaokrouhli ho na 3 desetinna mista Q=quad(fx,xfcemin,xfcemax); Q=round(Q*1000)/1000; % vytvori handle pro absolutni hodnotu funkce eval(strcat(['fx = @(x) abs(' get(fce,'string') ');'])); % spocita integral z absolutni hodnoty a zaokrouhli ho Qabs=quad(fx,xfcemin,xfcemax); Qabs=round(Qabs*1000)/1000; % vypise vysledky set(vystup,'string',... sprintf('integrál z této funkce (%s) v intervalu od %s do %s má hodnotu %s, obsah vybarvené plochy je %s.',... get(fce,'string'),... get(interval1,'string'),... get(interval2,'string'),... num2str(q),... num2str(qabs))); Použité zdroje - fukce HELP - příkazy a funkce probrané na cvičení - Matlab Function Reference, The MathWorks Inc., 2001 - Matlab a Simulink, Ing. František Dušek Csc., 2000 - Matlab pro začátečníky, K. Zaplatílek a B. Doňar, 2003 - rady jiných studentů na IRC 7

Závěr Ačkoliv se to tak původně nezdálo, po probrání většiny potřebných příkazů a funkcí na cvičení se řešení problému ukázalo býti relativně snadné, vše, co jsem neznal ze cvičení, jsem nastudoval z uvedených knih, detailní informace ke každému příkazu či funkci jsem pak získal použitím příkazu help. Díky práci na programu jsem si na cvičeních získané znalosti ještě více rozšířil, nicméně vzhledem ke studiu oboru informatika již asi nebudu mít mnoho příležitostí je využít. 8