1 Seznámení s MATLABem - elementární funkce MATLABu



Podobné dokumenty
1 Seznámení s MATLABem - elementární funkce MATLABu

Používání klávesnice. Zobrazit vše. V tomto článku

10 je 0,1; nebo taky, že 256

WEBDISPEČINK NA MOBILNÍCH ZAŘÍZENÍCH PŘÍRUČKA PRO WD MOBILE

Algoritmizace a programování

Poukázky v obálkách. MOJESODEXO.CZ - Poukázky v obálkách Uživatelská příručka MOJESODEXO.CZ. Uživatelská příručka. Strana 1 / 1. Verze aplikace: 1.4.

Seznámení žáků s pojmem makra, možnosti využití, praktické vytvoření makra.

Zadávání tiskových zakázek prostřednictvím JDF a Adobe Acrobat Professional

Rozšířená nastavení. Kapitola 4

Uživatelská dokumentace

Manuál Kentico CMSDesk pro KDU-ČSL

Obsah. Obsah. Úvod Makra v Excelu Nahrávání maker První setkání s editorem jazyka Visual Basic... 31

Pomocník diabetika Uživatelská příručka

Android Elizabeth. Verze: 1.3

TIP: Pro vložení konce stránky můžete použít klávesovou zkratku CTRL + Enter.

vismo Edituj, co vidíš.

Novinky verzí SKLADNÍK 4.24 a 4.25

Záloha a obnovení Uživatelská příručka

Obsah. Obsah. Úvod... 7

TVORBA MULTIMEDIÁLNÍCH PREZENTACÍ. Mgr. Jan Straka

1. Požadavky na provoz aplikací IISPP

NÁVOD K OBSLUZE MODULU VIDEO 64 ===============================

Algoritmizace a programování

Zálohování a zotavení Uživatelská příručka

Operace nad celými tabulkami

rozlišení obrazovky 1024 x 768 pixelů operační systém Windows 2000, Windows XP, Windows Vista 1 volný sériový port (volitelný) přístup na internet

Testovací aplikace Matematika není věda

Programový komplet pro evidence provozu jídelny v modul Sklad Sviták Bechyně Ladislav Sviták hotline: 608/

c sin Příklad 2 : v trojúhelníku ABC platí : a = 11,6 dm, c = 9 dm, α = Vypočtěte stranu b a zbývající úhly.

Těhotenský test pro zrakově postižené Tereza Hyková

Příručka pro zadavatele E-ZAK krok za krokem

WEBMAP Mapový server PŘÍRUČKA PRO WWW UŽIVATELE Hydrosoft Veleslavín, s.r.o., U Sadu 13, Praha 6

Chronis IB / IB L Programovatelné spínací hodiny

SAUT 3.1. program pro vyhodnocení výsledků zkoušení impulzní odrazovou metodou

Využití interaktivní tabule ve výuce

ROZCVIČKY. (v nižší verzi může být posunuta grafika a špatně funkční některé odkazy).

Vizualizace v ArConu (1.část) světla a stíny

STŘEDOŠKOLSKÁ ODBORNÁ ČINNOST. Chemické výpočty. Aleš Kajzar Martin Honka

BRICSCAD V16. Modelování strojírenských sestav

Mikromarz. CharGraph. Programovatelný výpočtový měřič fyzikálních veličin. Panel Version. Stručná charakteristika:

1.2.5 Reálná čísla I. Předpoklady:

Podrobný postup pro doplnění Žádosti o dotaci prostřednictvím Portálu Farmáře. 1. kolo příjmu žádostí Programu rozvoje venkova ( )

Uživatelský manuál pro práci se stránkami OMS a MS provozované portálem Myslivost.cz. Verze 1.0

1 - Prostředí programu WORD 2007

Příprava na 1. čtvrtletní písemku pro třídu 1EB

Vytvoření nebo odstranění makra Excel

Představení notebooku Uživatelská příručka

DATABÁZE DŮLEŽITÉ: Před načtením nové databáze do vaší databáze si prosím přečtěte následující informace, které vám umožní:

Příklad 1.3: Mocnina matice

AutoCAD Architecture 2008

Návod k používání registračního systému ČSLH

Hra Života v jednom řádku APL

Obsah ÚVOD. Participanti. Nastavení testu. - úvod - participanti - nastavení testu - přehled úkolů testu - soupis problémů a návrh řešení - závěr

DUM 05 téma: Základy obsluha Gimp

NÁVRHOVÝ PROGRAM VÝMĚNÍKŮ TEPLA FIRMY SECESPOL CAIRO PŘÍRUČKA UŽIVATELE

Počáteční nastavení aplikace WiFiS

Měřidla. Existují dva druhy měření:

ČÁST PÁTÁ POZEMKY V KATASTRU NEMOVITOSTÍ

Výsledky přijímacích zkoušek

Cílem kapitoly je seznámit studenta se strukturou programu a jeho překladem.

Vydání občanského průkazu

Co najdete v ASPI? (pro uživatele SVI FSE UJEP)

1.11 Vliv intenzity záření na výkon fotovoltaických článků

Modul Řízení objednávek.

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: jan.skrbek@tul.cz tel.: Konzultace: úterý

POUŽÍVÁME TABULKY A GRAFY VE VÝUCE

Textové editory a procesory

Rozhodněte se, co budete dál dělat

POSTUP TVORBY DOKUMENTU základní funkce. Osnova. Vložení textu

Manuál uživatele čipové karty s certifikátem

Zabezpečení Uživatelská příručka

DOTWALKER NAVIGACE PRO NEVIDOMÉ A SLABOZRAKÉ

účetních informací státu při přenosu účetního záznamu,

Zálohování a obnova Uživatelská příručka

Návod k použití aplikace MARKETINGOVÉ PRŮZKUMY.CZ

-1- N á v r h ČÁST PRVNÍ OBECNÁ USTANOVENÍ. 1 Předmět úpravy

Návod na zřízení datové schránky právnické osoby nezapsané v obchodním rejstříku

INTELIGENTNÍ DŮM. Zdeněk Kolář, Viktor Daněk. Střední průmyslová škola sdělovací techniky Panská 856/3, Praha 1

Školní kolo soutěže Mladý programátor 2016, kategorie A, B

PŘÍRUČKA K PŘEDKLÁDÁNÍ PRŮBĚŽNÝCH ZPRÁV, ZPRÁV O ČERPÁNÍ ROZPOČTU A ZÁVĚREČNÝCH ZPRÁV PROJEKTŮ PODPOŘENÝCH Z PROGRAMU BETA

Uživatelské postupy v ISÚI Založení ulice a změna příslušnosti adresního místa k ulici

FS-130W SCALEMAN. Digitální osobní váha. Návod k použití. Obsah. Osobní váha FS-130W

Komfortní datová schránka

1.2.7 Druhá odmocnina

První kroky v portálu

INFORMATIKA V CHOVECH PRASAT

Aktualizace softwaru Uživatelská příručka

SCHÉMA PROCESU MTM ÚPRAV V SYSTÉMU INVESMARK FUTURA

Úprava tabulek v MS Word. Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T. G. Masaryka, Kostelec nad Orlicí

Microsoft Office Project 2003 Úkoly projektu 1. Začátek práce na projektu 1.1 Nastavení data projektu Plánovat od Datum zahájení Datum dokončení

VÝKLADOVÁ PRAVIDLA K RÁMCOVÉMU PROGRAMU PRO PODPORU TECHNOLOGICKÝCH CENTER A CENTER STRATEGICKÝCH SLUŽEB

Zálohování a obnova Uživatelská příručka

Vzdělávací program pro obchodní partnery společnosti ROCKWOOL průvodce školením

Podrobný postup pro vygenerování a zaslání Žádosti o podporu a příloh OPR přes Portál farmáře

téma: Formuláře v MS Access

Obsah. Úvod Pracovní den začíná Kancelářská agenda... 43

Zadání soutěžních úloh

2.1 Pokyny k otevřeným úlohám. 2.2 Pokyny k uzavřeným úlohám TESTOVÝ SEŠIT NEOTVÍREJTE, POČKEJTE NA POKYN!

Kdy (ne)testovat web oční kamerou

P O K Y N Y P R O ZADAVATELE

Transkript:

1 Seznámení s MATLABem - elementární funkce MATLABu Osnova: 1.1 MATLAB...1 1.1.1 Hlavní kategorie MATLABovských funkcí... 1.1. Aritmetické operátory a některé speciální znaky... 1.1. Základní elementární funkce MATLABu...4 1.1.4 Výpočty funkčních hodnot...7 1.1.5 Zápisy funkcí a operátorů...11 1.1.6 Exponenciální funkce...15 1.1.7 Trigonometrické funkce...16 1.1.8 Převod radiánů na stupně, minuty a vteřiny...19 V této kapitole se dozvíte základní informace o matematickém programu MATLAB. Naučíte se používat některé operace a předdefinované funkce MATLABu k výpočtu funkčních hodnot. Napíšete si svůj první program, který při zadání hodnoty kosinu nějakého úhlu vypočítá a vypíše na monitor hodnotu tohoto úhlu ve stupních, minutách a vteřinách. Předpokládám, že víte, co je to určitý integrál, umíte ho vypočítat a znáte jeho geometrický význam. Dále předpokládám, že víte, co je polynom, a jak se počítá jeho funkční hodnota, že znáte mocniny s racionálním exponentem, že znáte a umíte počítat hodnoty funkcí logaritmických, exponenciálních a goniometrických. Také předpokládám, že umíte převádět radiány na stupně a naopak. Za samozřejmost považuji, že umíte psát libovolné znaky na klávesnici popř. přepnout mezi anglickou a českou klávesnicí. Kontaktní cvičení trvá přesně 100 minut. Vám by prostudování této kapitoly mělo trvat přibližně 10 minut. Pokud ale nemáte zažité výše uvedené potřebné znalosti, tak raději počítejte s tím, že budete potřebovat času více. Doporučuji se posilnit, tj. najíst se a napít, vypnout mobil, nachystat si tužku, papír, tato skripta, spustit MATLAB, (ve kterém máte otevřené pouze okno Command Window), vyhradit si asi 180 minut, popř. dát na dveře cedulku "NERUŠIT" a pustit se do práce. Nejprve budu stručně charakterizovat matematický program MATLAB a uvedu hlavní kategorie MATLABovských funkcí. Protože tato část nepatří mezi základní učivo, tak stačí, když si přečtete pouze první odstavec, a pak můžete přeskočit až na dalšího Průvodce studiem. 1.1 MATLAB MATLAB poskytuje svým uživatelům nejen mocné grafické a výpočetní nástroje, ale i rozsáhlé knihovny funkcí spolu s výkonným programovacím jazykem čtvrté generace. Knihovny jsou svým rozsahem využitelné prakticky ve všech oblastech lidské činnosti. Za nejsilnější stránku MATLABu je považováno mimořádně rychlé výpočetní jádro s optimálními algoritmy, které jsou prověřeny léty provozu na špičkových pracovištích po celém světě. MATLAB byl implementován na všech významnějších platformách. MATLAB dále nabízí podporu vícerozměrných polí a uživatelsky definovaných datových struktur, otevřený a rozšiřitelný systém, působivou D a D grafiku, množství aplikačních knihoven, objektové programování, interaktivní nástroje pro tvorbu grafického uživatelského rozhraní (GUI builder), rozšířenou podporu řídkých matic, pohodlnou práci se soubory různých formátů, integrované prostředí pro ladění programů (debugger), zvukový vstup a 1

výstup, animaci, výpočetní jádro pro programy psané ve Fortranu a jazyce C a rozsáhlou tištěnou i hypertextovou on-line dokumentaci. Struktury Jádrem programu jsou algoritmy pro operace s maticemi komplexních čísel. MATLAB umožňuje provádět všechny běžné operace jako násobení, inverze, determinant atd. a v nejjednodušší podobě je možno jej použít jako maticový kalkulátor, protože všechny tyto operace se zapisují téměř tak, jak byste je psali na papíře. Kromě datových typů jednodušších než tradiční matice podporuje MATLAB také typy složitější, jako jsou např. vícerozměrná pole reálných nebo komplexních čísel. Dalším datovým typem jsou tzv. pole buněk, tedy struktury podobné maticím, ve kterých ovšem každý prvek může být jiného typu. Podobně lze tvořit datové struktury, kde jsou prvky rozlišeny ne souřadnicemi, ale jménem, takže připomínají struktury známé z běžných programovacích jazyků. Skládáním těchto datových typů je pak možné vytvořit libovolně složité datové struktury. MATLAB ukládá všechna čísla v tzv. dvojité přesnosti, ovšem na přání uživatele je možné zvolit úspornější formu. Vektor reálných čísel může v MATLABu reprezentovat i polynom a operace s polynomy jsou v programu rovněž obsaženy. Vektory mohou také reprezentovat časové řady nebo signály a MATLAB obsahuje funkce pro jejich analýzu, jako hledání extrémů, výpočet střední hodnoty, směrodatné odchylky a korelačních koeficientů nebo rychlou Fourierovu transformaci. MATLAB také podporuje speciální formát uložení tzv. řídkých matic, které jsou rozměrem velké, ale obsahují většinu nulových prvků. MATLAB přidává možnost definovat k datovým strukturám funkce, které s nimi pracují. Tyto objekty obohacují výpočetní prostředí MATLABu o prostředky obecných programovacích jazyků a posouvají tak jeho možnosti na úroveň například C++. Spojení objektově orientovaného jazyka s ověřenou matematickou a grafickou silou vytváří z MATLABu bezkonkurenčně ucelený výpočetní systém. Grafika Grafika v MATLABu umožňuje snadné zobrazení a prezentaci získaných výsledků. Je možné vykreslit různé druhy grafů: dvourozměrné, třírozměrné, histogramy, apod. MATLAB také umožňuje otevřít více oken pro zobrazení grafů najednou nebo zobrazit více grafů v jednom okně. Pro pokročilé uživatele je určeno stínování třírozměrných grafů s určením zdroje dopadajícího světla, animace třírozměrných grafů, zobrazení kontur a mnoho dalších grafických funkcí. Většinu těchto efektů je možné docílit jedním nebo několika málo příkazy a jejich vykreslení je rychlé díky použitému algoritmu Z-buffer. Obrázky v grafických oknech MATLABu navíc nejsou statické každý již nakreslený objekt má přiřazen identifikátor, jehož prostřednictvím je možné měnit vlastnosti objektu a tím i jeho vzhled. Tento grafický systém, nazvaný Handle Graphics, umožňuje vytvořit v okně také ovládací prvky (tlačítka apod.) a vytvořit tak graficky ovládané uživatelské rozhraní. Samozřejmě je k dispozici nástroj pro vytvoření uživatelského rozhraní interaktivně, bez nutnosti programování. MATLAB dále podstatně rozšiřuje možnosti práce s trojrozměrnými objekty včetně nových technik násvitu, stínování a perspektivních zobrazení objektů. Vysoká kvalita zobrazení je zajištěna použitím 4-bitových barev. Otevřenost Vlastností, která patrně nejvíce přispěla k rozšíření MATLABu, je jeho otevřená architektura. MATLAB je úplný programovací jazyk, to znamená, že uživatelé v něm mohou vytvářet funkce šité na míru pro jejich aplikace. Tyto funkce se způsobem volání nijak neliší od vestavěných funkcí a jsou uloženy v souborech v čitelné formě. Dokonce většina funkcí s MATLABem dodávaných je takto vytvořena a opravdu vestavěné jsou jen funkce základní. To má dvě velké výhody: jazyk MATLABu je téměř neomezeně rozšiřitelný a kromě toho se uživatel může při psaní vlastních funkcí poučit z algoritmů s programem dodávaných. Navíc jsou takto koncipované funkce snadno přenosné mezi různými platformami, na kterých je MATLAB implementován. Kategorie MATLAB 6.1 (R1.1) z června 001 poskytuje 4 hlavních kategorií funkcí. Některé MATLABovské funkce jsou obsaženy uvnitř interpreteru, zatímco jiné jsou ve formě m-souborů. M-soubory obsahují pouze pomocný text, jsou organizovány do 4 adresářů, z nichž každý obsahuje soubory sdružené s kategorií.

1.1.1 Hlavní kategorie MATLABovských funkcí audio podpora zvuku datafun analýza dat a Fourierova transformace datatypes datové typy a struktury demos příklady a demonstrace elfun elementární matematické funkce elmat elementární matice a manipulace s maticemi funfun funkce pro práci s funkcemi a ODE řešení general funkce k obecnému použití graphd dvoudimenzionální (D) grafika graphd třídimenzionální (D) grafika graphics ovládání grafiky iofun soubory vstupu/výstupu lang konstrukce programovacího jazyka matfun maticové funkce numerická lineární algebra ops operátory a speciální znaky polyfun interpolace a polynomy sparfun řídké matice specfun speciální matematické funkce specgraph speciální grafy strfun znakové řetězce timefun čas a datum uitools nástroje grafického uživatelského rozhraní verctrl řízení verze winfun soubory rozhraní operačního systému Windows (DDE/ActiveX) V adresáři Matlab6p1\Toolbox\Matlab je uloženo 4 hlavních adresářů, ve kterých jsou jednotlivé příkazy a funkce programu MATLAB. Po spuštění například příkazu help audio, získáte všechny příkazy a funkce sdružené v adresáři audio. Abyste získali podrobný popis jednotlivého příkazu (například colormap), nebo funkce, pak spustíte příkaz help colormap. Jestliže chcete průvodce MATLABem, pak spustíte příkaz intro, a jestliže si chcete prohlédnout demonstrační příklady, pak zadáte příkaz demo. V novější verzi MATLABu (MATLAB R009b) Vám funguje příkaz help colormap úplně stejně jako ve staré verzi MATLABu. Příkaz intro Vám však poskytne přehled o aktuálně nastavených proměnných a příkaz help audio je nefunkční. Příkaz demo Vám zobrazí celou obrazovku, kde si můžete vybrat, které video, nebo skript si chcete pustit. V nejnovější verzi MATLABu (MATLAB R014b) Vám příkaz help colormap zobrazí příklady běžného použití a pokud chcete vědět více, tak si musíte spustit Reference page for colormap. Příkazy intro, help audio a demo fungují jako v novější verzi. Co je stará, novější a nejnovější verze MATLABu je podrobněji vysvětleno v úvodu k tomuto učebnímu textu. 1.1. Aritmetické operátory a některé speciální znaky + plus, unární plus minus, unární minus * násobení matic.* násobení polí; tj. prvků matic ^ umocnění matic.^ umocnění polí \ zpětné lomítko nebo dělení matic zleva / lomítko nebo dělení matic zprava

.\ dělení polí zleva./ dělení polí zprava : dvojtečka ( ) kulaté závorky a indexování [ ] hranaté závorky { } složené závorky a indexování. desetinná tečka, čárka, separátor ; středník % poznámka = přiřazení ' uvozovky atd. Nebudeme probírat všechny MATLABovské příkazy a funkce, ale zaměříme se jen na ty nejzákladnější a ty, které souvisí s výukou předmětu Matematika I a II. Přitom text, který je psán v programu MATLAB a výstupy z tohoto programu, budou psány písmem Courier New, názvy m-souborů budou psány tučně a kursivou. V následujících čtyřech tabulkách jsou základní předdefinované funkce trigonometrické, exponenciální, pro komplexní čísla a numerické. Pro Vás jsou povinné pouze ty, které znáte z předmětů Matematika I a II. 1.1. Základní elementární funkce MATLABu Tab. 1.1: Trigonometrické funkce Funkce Název funkce 4 Příkaz MATLABU Výstup MATLABU sin sinus sin() 0.1411 sinh hyperbolický sinus sinh() 10.0179 asin arkussinus asin(0.9) 1.1198 asinh argument hyperbolického sinu asinh(0.4) 0.900 cos kosinus cos() -0.9900 cosh hyperbolický kosinus cosh() 10.0677 acos arkuskosinus acos(0.4) 1.159 acosh argument hyperbolického kosinu acosh() 1.170 tan tangens tan() -0.145 tanh hyperbolický tangens tanh() 0.9951 atan arkustangens atan(4) 1.58 atan čtyř-kvadrantový arkustangens atan(1.1,1) 0.80 atanh argument hyperbolické tangenty atanh(0.7) 0.867 sec sekans sec() -1.0101 sech hyperbolický sekans sech() 0.099 asec arkussekans asec(5) 1.694 asech argument hyperbolické sekanty asech(0.5) 1.170 csc kosekans csc() 7.086 csch hyperbolický kosekans csch() 0.0998 acsc arkuskosekans acsc(5) 0.014 acsch argument hyperbolické kosekanty acsch(4) 0.475 cot kotangens cot() -7.015 coth hyperbolický kotangens coth() 1.0050 acot arkuskotangens acot() 0.18 acoth argument hyperbolické kotangenty acoth(7) 0.148

Tab. 1.: Exponenciální funkce Funkce Název funkce Příkaz MATLABU Výstup MATLABU exp exponenciální funkce exp(.7) 14.8797 log přirozený logaritmus log(9.8).84 log10 dekadický logaritmus log10(10) 1 log logaritmus o základu dvě log(16) 4 pow mocnina o základu dvě pow() 8 sqrt druhá odmocnina sqrt(16) 4 atd. Tab. 1.: Funkce pro komplexní čísla Funkce Název funkce Příkaz Výstup MATLABU MATLABU abs absolutní hodnota abs(-+i).6056 angle argument komplexního čísla (fázový úhel) angle(-+i).1588 complex sestrojí komplexní číslo z reálné a imaginární části complex(-,) -.0000+.0000i conj komplexně sdružené číslo conj(-+i) -.0000.0000i imag imaginární část komplexního čísla imag(-+i) real reálná část komplexního čísla real(-+i) - atd. Tab. 1.4: Numerické funkce Funkce Název funkce Příkaz MATLABU Výstup MATLABU fix převede na celé číslo tak, že odřízne desetinnou část fix(-5.16) -5 floor zaokrouhlí dolů na nejbližší nižší celé číslo floor(-5.16) -6 ceil zaokrouhlí nahoru na nejbližší vyšší celé číslo ceil(-5.16) -5 round zaokrouhlí na celé číslo běžným způsobem round(-5.16) -5 mod modul (znaménko zbytku po celočíselném dělení) mod(7,-) -1 rem zbytek po celočíselném dělení rem(7,) 1 sign funkce signum (znaménko funkce) sign(-5.16) -1 A nyní Vám konečně ukáži jeden příklad a jeho řešení pomocí MATLABu, abyste si udělali alespoň maličkou představu o tom, co od MATLABu můžete očekávat a co se v něm budete učit. Motivační příklad Nalezněte obsah plochy, která je ohraničená grafem funkce f : y = x 5x + 6, osou y a úsečkou s krajními body AB, kde A = (0; 0) a B = (; 0). Výsledek znázorněte graficky. Řešení Nejprve je vhodné si načrtnout, jak vypadá plocha, jejíž obsah máte vypočítat. 5

Obr.1.1: Náčrtek k řešení motivačního příkladu Sice špatně, ale vidíte, že musíte vypočítat dva určité integrály, protože jinak byste získali rozdíl plochy ležící nad osou x a ležící pod osou x a ne skutečný obsah. Pro grafické znázornění by bylo dobré barevně vyznačit příslušnou plochu, přímo zapsat výsledek, popř. ještě popsat osy a úsečku AB. Výsledek v MATLABu by pak mohl vypadat například tak, jak vidíte na následujícím obrázku. Protože celý učební text, který právě čtete, je psán proporcionálním patkovým písmem Times New Roman a velikost je 1, tak i v MATLABu bylo použito totéž patkové písmo Times New Roman. Pokud Vás již nyní zajímá, jak lze takovýto obrázek v MATLABu vytvořit, tak si přečtěte text Pro zájemce, který je uveden pod obrázkem. V příští kapitole se začneme věnovat funkcím systematicky. Podobné grafy a výpočty pak začnete vytvářet sami. Nejprve bez popisů a později i s popisy. Ačkoliv MATLAB není program, který by byl speciálně určen k popisům grafů, tak v něm můžete cokoliv popsat tak, jak potřebujete a není pravda, že nelze v MATLABu psát českou diakritiku, řecká písmena, kursivní znaky, měnit velikost a font písma atd. Vše lze, ale samozřejmě jen tehdy, když se ví jak. Výsledek Obr.1.: Řešení motivačního příkladu 6

Nejprve byla naprogramována nová funkce mot.m. mot.m function[y]=mot(x); y=x.*x-5.*x+6; Pak byla vypočítána číselná hodnota hledaného plošného obsahu pomocí dvou určitých integrálů P=quad('mot',0,)-quad('mot',,) P = 4.8 Nakonec byl napsán příslušný m-soubor motivace.m, ve kterém byla bledě modrou barvou znázorněna příslušná plocha. motivace.m x1=0:0.01:; y1=x1.*x1-5.*x1+6; patch([x1 0],[y1 0],'c'); hold on; plot([-1,7],[0,0],'k'); plot([0,0],[-1,7],'b'); x=-1:0.01:7; y=x.*x-5.*x+6; plot(x,y,'b'); plot([0,],[0,0],'b'); axis square;box off; axis([-1 7-1 7]); title('\fontname{times new roman ce}obsah plochy'); text(0.75,6,'\fontname{times new roman ce}plocha měří přibližně'); text(1,05.5,'\fontname{times new roman ce}4,8 příslušných'); text(1,5,'\fontname{times new roman ce}plošných jednotek.'); text(6.75,0.5,'\fontname{times new roman ce}\itx'); text(0.5,6.75,'\fontname{times new roman ce}\ity'); text(0.5,-0.5,'\fontname{times new roman ce}a'); text(.5,-0.5,'\fontname{times new roman ce}b'); Jak již bylo řečeno výše, takovéto obrázky a výpočty budete za chvíli vytvářet sami a zanedlouho všem výše uvedeným příkazům porozumíte. Nejprve ale začneme tím, že si ukážeme, jak se v MATLABu počítají funkční hodnoty elementárních funkcí, tj. ukážeme si, jak používat MATLAB jako výpočetní prostředek, jako takovou kalkulačku. 1.1.4 Výpočty funkčních hodnot Příklad 1.1: Výpočet funkční hodnoty polynomu 7 4 Vypočítejte funkční hodnotu polynomu x + x + x 7 pro x =. Řešení a) Na str. -4 jsou uvedeny aritmetické operátory, které lze v MATLABu použít. Můžete tedy postupovat tak, jako na obyčejné kalkulačce a napsat do příkazového řádku MATLABu tj. do Command Window za symbol >> toto: ******+****+**-7 obdržíte výsledek: ans = 177 což budu dále zapisovat do jednoho řádku jako ans = 177 7

b) Můžete také použít symbol pro umocňování, který znáte z Excelu, tj. symbol ^ a napsat: ^7+*^4+^-7 obdržíte stejný výsledek: ans = 177 c) Oba výše uvedené příkazy můžete také zadat takto:.*.*.*.*.*.*+.*.*.*.*+.*.*-7.^7+.*.^4+.^-7 protože nenásobíte matice, ale pole. d) Pokud byste potřebovali vypočítat funkční hodnotu nejen pro x =, ale pro mnohem více různých hodnot x, pak by byl tento postup velice nepraktický a pomalý. V tomto případě zadáte do MATLABu polynom obecně příkazem: p=[1,0,0,,0,,0,-7]; To znamená, že do hranaté závorky napíšete koeficienty daného polynomu od nejvyšší mocniny po nejnižší. Samozřejmě, že pokud některá mocnina chybí, tak je koeficient 0 a nesmíte ho zapomenout napsat. Výpočet pak provedete příkazem: polyval(p,) opět obdržíte výsledek: ans = 177 Funkční hodnotu například pro x = 5 byste pak získali příkazem: polyval(p,5) výsledek je ans = 8004 Výsledek 7 4 Funkční hodnota polynomu x + x + x 7 pro x = je 177. Tip 1.1: Klávesové zkratky Pokud píšete odbornou práci česky, tak je velice nepraktické přepínat neustále klávesnici českou na anglickou a obráceně pouze proto, abyste napsali hranaté závorky, nebo zpětné lomítko atd. V následující tab. 1.5 jsou uvedeny klávesové zkratky, které se velice dobře pamatují a velice Vám usnadní práci. Navíc, ve specializované učebně výpočetní techniky je implicitně nastavena klávesnice česká. Tab. 1.5: Klávesové zkratky Znak Název znaku Klávesová zkratka Kód \ zpětné lomítko pravé Alt + q levé Alt + 09 levé Alt + 9 @ zavináč pravé Alt + v levé Alt + 064 levé Alt + 64 ~ velká tilda pravé Alt + + (pod 1) levé Alt + 016 levé Alt +16 ^ stříška pravé Alt + š (pod ) levé Alt + 094 levé Alt + 94 [ levá hranatá závorka pravé Alt + f levé Alt + 091 levé Alt + 91 ] pravá hranatá závorka pravé Alt + g levé Alt + 09 levé Alt + 9 { levá složená závorka pravé Alt + b levé Alt + 01 levé Alt +1 } pravá složená závorka pravé Alt + n levé Alt + 015 levé Alt +15 < menší než pravé Alt + < levé Alt + 060 levé Alt + 60 > větší než pravé Alt + > levé Alt + 06 levé Alt + 6 8

Jistě Vás nyní napadlo, zda by nešla podobným způsobem provést tabelace funkce například pro hodnoty x = 1,,, 0. Samozřejmě, že odpověď je ano, lze, například pomocí tzv. FOR cyklu, což si ukážeme v jiné kapitole. Nyní, pro zvídavé studující, uvedu pouze příslušný m-soubor tabelace.m. tabelace.m p=[1,0,0,,0,,0,-7]; for i=1:0, x(i)=polyval(p,i); end; V indexované proměnné x jsou, po spuštění tohoto m-souboru, uloženy všechny vypočtené hodnoty. Chcete-li si na monitoru zobrazit například funkční hodnotu pro x =, tak do příkazové řádky MATLABu napište: tabelace; x() a obdržíte výsledek: ans = 441 Poznámka 1.1: Použití ovladače doskey V MATLABu funguje ovladač doskey, který si pamatuje Vámi napsaný příkaz a lze jej vyvolat kurzorovou šipkou (směr nahoru). Toho s výhodou používejte v případě, že jste udělali nějakou chybu a potřebujete ji opravit, nebo k obměně příkazu, nebo k opětovnému spuštění příkazu atd. Tip 1.: Ukončení příkazu čárkou a středníkem Pokud za příkazem v MATLABu není žádný znak (dosud jste tak psali téměř všechny příkazy), tak se výsledek příkazu vypíše na monitor. Pokud byste za příkazem napsali středník, tj. napsali: ******+****+**-7; tak se Vám výpočet provede, ale výsledek se na monitoru nezobrazí (pouze se uloží do proměnné ans). Pokud za příkazem napíšete čárku, tj. napíšete: ******+****+**-7, tak se výsledek na monitoru opět objeví. Tip 1.: Uložení výsledku do proměnné Pokud v MATLABu napíšte příkaz: y=******+****+**-7 tak se výsledek nejen zobrazí na monitoru, ale zároveň se uloží do proměnné y. Na monitoru uvidíte: y = 177 a po zadání příkazu: y se vám opět zobrazí: y = 177 Varování 1.1: Název proměnné Název proměnné může obsahovat až 1 znaků. Jsou povoleny POUZE tyto znaky: písmena anglické abecedy (a-z, A-Z), číslice (0-9) a podtržítko (_). Číslicí název začínat nesmí. MATLAB rozlišuje velká a malá písmena. 9

K zamyšlení 1.1 Co se stane, když napíšete y=******+****+**-7; Řešení Výsledek se na monitoru nezobrazí, ale zůstane uložený v proměnné y a pokud napíšete příkaz: y tak se Vám na monitoru zobrazí: y = 177 Vyzkoušejte si to! Upozornění 1.1: Psaní mezer Pokud to nebude výslovně uvedeno, tak nevpisujte do příkazového řádku MATLABu mezery. Mezera ve většině příkazů slouží jako oddělovač a nejčastěji se píše místo čárky. Pokud napíšete například příkaz: *.1 tak ve staré verzi MATLABu obdržíte červené chybové hlášení:??? *.1 Error: Missing operator, comma, or semicolon. v novější a nejnovější verzi MATLABu pak červené chybové hlášení:?? *.1 Error: Unexpected MATLAB expression. pokud ale napíšete příkazy: p=[1 0 0 0 0-7]; polyval(p,) tak obdržíte správný výsledek: 177 Vy budete mezeru používat většinou pouze u příkazu axis, ale to si povíme později. Upozornění 1.: Násobení matic a polí MATLAB rozlišuje násobení matic, pro které má znak * a násobení polí (také se říká násobení po prvcích resp. po složkách), pro které má znak.*. Obdobně rozlišuje / a./, ^ a.^ atd. Vy jste doposud pracovali s reálnými čísly, které můžete chápat jako matici typu 1 1 i jako pole délky 1. Nezáleželo tedy na tom, zda napíšete *, nebo.*, protože násobení matic typu 1 1 se provádí stejně jako násobení polí délky 1. Varování 1.: Nezaměňujte násobení matic a polí Při symbolických výpočtech, které budete později provádět NIKDY nesmíte psát.* (tečka hvězdička). Napíšete-li například příkaz: f=sym('x.*x+7') uvidíte na monitoru, ve všech verzích MATLABu, místo výsledku, červené chybové hlášení. Toto hlášení je v každé verzi poněkud jiné. Ve staré verzi vypadá takto:??? Error using ==> sym/sym (charsym) x.*x+7 is not a valid symbolic expression. Error in ==> C:\MATLAB6p1\toolbox\symbolic\@sym\sym.m On line 9 ==> S = charsym(x); 10

Napíšete-li příkaz: f=sym('x*x+7') uvidíte na monitoru výsledek: f = x*x+7 Při kreslení grafů naopak VŽDY musíte psát.* (tečka hvězdička). Napíšete-li například posloupnost příkazů: x=0:0.01:;y=x*x+7;plot(x,y,'b'); zobrazí se Vám, ve všech verzích MATLABu, na monitoru, červené chybové hlášení??? Error using ==> * Inner matrix dimensions must agree. Napíšete-li posloupnost příkazů: x=0:0.01:;y=x.*x+7;plot(x,y,'b'); otevře se Vám nové okno s obrázkem, kde uvidíte toto: Obr. 1.: Demonstrace správného použití operátoru.* Vyzkoušejte si to! 1.1.5 Zápisy funkcí a operátorů Příklad 1.: Jednoduché odmocniny a mocniny Vypočítejte a = 1 7, 8 4 a =, a =. 7 Řešení Když se podíváte do tab. 1. na str. 5, tak uvidíte předdefinované funkce MATLABu, které Vám úlohu pomohou vyřešit. Můžete postupovat například takto: a) Do příkazové řádky MATLABu napište příkaz: a1=sqrt(7) na monitoru se zobrazí výsledek: a1 =.6458 b) Do příkazové řádky MATLABu napište příkaz: a=^8 na monitoru se zobrazí výsledek: a = 56 11

c) Protože čtvrtou odmocninu můžete napsat také jako mocninu s exponentem 4 1, tak do MATLABu napište příkaz: a=7^(1/4) na monitoru se zobrazí výsledek: a = 1.666 Výsledek Hledané hodnoty jsou: a = 7,645 8, a = 8 56, a 4 = 7 1,66 6. 1 1 = Upozornění 1.: Desetinná tečka MATLAB používá desetinnou tečku a ne desetinnou čárku. K zamyšlení 1. Jakým jiným příkazem lze vypočítat a? Řešení Stačí zadat příkaz: a=pow(8) Příklad 1.: Algebraické výrazy s mocninami a odmocninami Vypočítejte funkční hodnotu následujících výrazů: z 7 5 4 = +. Řešení Stačí do MATLABu zadat příkaz: z1=(^+5^4)^(1/) na monitoru se zobrazí výsledek: z1 = 8.586 pak zadejte příkaz: z=(7^5+^)^(1/5) výsledek je: z = 7.0007 a nakonec zadejte příkaz: z=(^5+^4)^(1/7) výsledek je: z = 1.9647 Výsledek 4 1 5 z = + ; 5 5 Funkční hodnoty jsou: z = + 5 4 8,586 ; 5 5 z = 7 + 7,000 7 ; 7 5 z 4 = + 1,964 7. 1 K zamyšlení 1. Jakým jiným příkazem lze vypočítat z 1? Řešení Můžete napsat příkaz: z1=(.^+5.^4).^(1/) z = 7 + ;

a obdržíte shodný výsledek: z1 = 8.586 Tip 1.4: Tabulka hodnot Pokud byste měli obdobných příkladů vypočítat mnohem více, nebo dokonce vygenerovat celou tabulku, tak můžete postupovat mnohem elegantněji a efektivněji. Struktura všech výrazů je vlastně takováto: a b x + a pak stále stejný příkaz z=(x.^b+y.^c).^(1/a). Například: a=;b=;c=4;x=;y=5;z1=(x.^b+y.^c).^(1/a) výsledek je: z1 = 8.586 y c. Stačí tedy zadat hodnoty proměnných a, b, c, x a y Zadání všech hodnot a, b, c, x a y lze provést pomocí matice, která bude mít tolik řádků, kolik hodnot z budete chtít vypočítat a sloupců bude mít 5, protože vždy zadáváte 5 hodnot. Výsledky můžete zobrazit na monitor a zároveň uložit pomocí cyklu do indexovaných proměnných. Použití jednoduchého cyklu si ukážeme v dalším cvičení. Jednoduchý program, tzv. m-soubor, který by vyřešil předchozí úlohu a vypočítal 10 hodnot z by mohl vypadat například takto: tabulka.m m=[,,4,,5;5,5,,7,;7,5,4,,;,,5,4,5;5,5,5,5,5;4,4,4,4,4;,,,,;,,4,4,5;4,4,5,6,6;5,5,6,,]; for i=1:10, z(i)=(m(i,4)^m(i,)+m(i,5)^m(i,))^(1/m(i,1)); end; V příkazovém řádku MATLABu pak stačí napsat: tabulka; z a obdržíte výsledek: z = 8.586 7.0007 1.9647 14.719 5.745 4.7568.7798 8.8 9.7595.9585 Upozornění 1.4: Lichá odmocnina ze záporného čísla V matematice je definována lichá odmocnina ze záporného čísla pomocí inverzní funkce k funkci lichá mocnina, která je definována pro libovolné reálné číslo a 8 =, 5 4 = atd. V MATLABu pokud zadáte: (-8)^(1/) tak obdržíte výsledek ans = 1.0000 + 1.71i pokud ale zadáte příkaz: -8^(1/) tak obdržíte správný výsledek: ans = - protože tento příkaz je identický (při výpočtu) s příkazem: -(8^(1/)) vypočítá tedy třetí odmocninu z 8 a pak změní znaménko na mínus. Jestliže chcete vypočítat 5 4 =, tak stačí zadat příkaz: 1

-(4^(1/5)) a obdržíte správný výsledek: - Příklad 1.4: Výrazy obsahující logaritmy Vypočítejte funkční hodnoty následujících výrazů: b 1 = lg 4, 589; b = ln 4, 875 ; b = log 5,457 ; b = 4 log 1, 564. Řešení Dekadický logaritmus se počítá pomocí předdefinované funkce log10, a proto stačí napsat příkaz: b1=log10(4.589) a obdržíte výsledek: b1 = 1.907 Přirozený logaritmus se počítá pomocí předdefinované funkce log, a proto stačí napsat příkaz: b=log(4.875) a obdržíte výsledek: b = 1.5841 Protože platí matematický vztah například takto: b=log(.457)/log(5) a dostanete výsledek: b = 0.7707 napíšete-li příkaz: b4=log(.564)/log(1/) dostanete výsledek: b4 = -1.1568 ln a log b a =, tak lze zbývající dvě hodnoty vypočítat ln b Výsledek Funkční hodnoty jsou tyto: b 1 = log 4,589 1,90 7 ; b = ln 4,875 1,584 1; b = log 5,457 0,770 7 ; b 4 = log 1,564 1,156 8. Upozornění 1.5: Dekadický a přirozený logaritmus Nepleťte si v MATLABu symboly pro jednotlivé logaritmy. V matematice je přirozený logaritmus ln v MATLABu log. Dekadický logaritmus je v matematice lg (na některých školách se ještě používá log), v MATLABu je log10. V matematice je binární (logaritmus o základu ) lb, v MATLABu je log. Symbol ln MATLAB nezná. Pokud se Vám nelíbí, jak je nutné zadávat příkaz pro výpočet například b = log 5, 457, tak si v MATLABu můžete vytvořit vlastní funkci, do které zadáte například nejprve hodnotu proměnné x a pak základ z a výsledkem bude logaritmus o základu z. Jak se to udělá? Napíšete například níže uvedený m-soubor logz.m a pak stačí zadat příkaz: b=logz(.457,5) 14

a obdržíte výsledek: b = 0.7707 logz.m function[y]=logz(x,z); y=log(x)./log(z); 1.1.6 Exponenciální funkce Příklad 1.5: Výrazy obsahující exponenciální funkci o základu e 8 4 Vypočítejte funkční hodnoty následujících výrazů: c 1 = ; c = e + e ; c e Řešení Stačí zadat příkaz: c1=/exp() a obdržíte výsledek: c1 = 0.1494 po zadání příkazu: c=exp(8)+exp(1/4) obdržíte výsledek: c =.98e+00 což je semilogaritmický tvar,98 10 desetinného čísla 98, a nakonec po zadání příkazu: c=exp(+1/7) obdržíte výsledek: c =.1700 Výsledek 1 1 + 7 = e 8 4 7 Funkční hodnoty jsou: c 1 = 0,149 4 ; c e e 98, = +, c = e,170 0. e 1 1 + Poznámka 1.: Zobrazení dalších desetinných míst Pokud byste potřebovali číslo c na více desetinných míst, tak stačí zadat například příkaz: c=numstr(c,10) a dostanete výsledek: c = 98.401 Můžete pak psát, že c 98,4 01. Výše uvedený příkaz numstr není jediná možnost, jak můžete vypočítané číslo zobrazit v jiném formátu. Jestliže si zadáte příkaz: help format tak získáte přehled o všech možnostech ve Vaší verzi MATLABu. Zadáte-li například příkaz: format long, c tak se Vám číslo c zobrazí ve stejném semilogaritmickém tvaru, jako bez zadání příkazu format, ale vypíše se Vám, ve všech verzích MATLABu, 15 desetinných míst:. 15

c =.98401458416e+00 což je,98 4 01 458 416 10 = 98,4 01 458 416. 1.1.7 Trigonometrické funkce Příklad 1.6: Hodnoty goniometrických a cyklometrických funkcí Vypočítejte u 1 = cos, u = arcsin 0, 584, u = sin 7. Řešení První dvě hodnoty vypočítáte snadno. Zadejte nejprve příkaz: u1=cos() a obdržíte výsledek: u1 = -0.9900 po zadání příkazu: u=asin(0.584) obdržíte výsledek: u = 0.66 Ve třetím případě musíte nejprve 7 stupňů převést na radiány, protože MATLAB implicitně počítá pouze s radiány. Protože 180..π radiánů, 7 x radiánů, 7 tak x = π v radiánech a stačí tedy napsat příkaz: 180 u=sin(7*pi/180) a obdržíte výsledek: u = 0.6018 Výsledek Funkční hodnoty jsou tyto: u 1 = cos 0,990 0 ; u = arcsin 0,584 0,6 6 ; u = sin 7 0,601 8. Varování 1.: Funkční hodnoty arkuskotangens 1 Z matematiky znáte funkci f : y = arccot x jako inverzní funkci k funkci 1 1 D ( f ) = H ( f ) = ( 0; π) a H ( f ) = D( f ) = R acot(0) tak se ve staré verzi MATLABu objeví hlášení: 16 f : y = cot x, kde. Jestliže ale v MATLABu zadáte příkaz: Warning: Divide by zero. In C:\MATLAB6p1\toolbox\matlab\elfun\acot.m at line 8 ans = 1.5708 zatímco v novější a nejnovější verzi MATLABu získáte správný výsledek: ans = 1.5708 π π víte totiž, že arccot 0 = 1,570 8, protože cot = 0. Pokud zadáte příkaz: h=acot(-5) tak ve všech třech verzích MATLABu získáte výsledek:

h = -0.1974 1 což ale víte, že je chybně, protože D ( f ) = H ( f ) = ( 0; π) kontrolu, tj. zadáte příkaz: cot(h) tak opět ve všech třech verzích MATLABu získáte výsledek: ans = -5. Jestliže si uděláte jakoby Jak je to možné? Pokud se pokusíte v MATLABu vykreslit funkci y = arccot x pomocí příkazu acot(x), tak ve všech třech verzích MATLABu dostanete nesmysl, který je na obr. 1.4, protože to není vůbec graf funkce (pro x = 0 máte více funkčních hodnot). V novém MATLABu se neobjeví žádné hlášení, takže studující, kteří tuto funkci neznají si myslí, že mají správný graf. Obr. 1.4: První pokus o graf funkce arkuskotangens Ve starém MATLABu obdržíte hlášení: Warning: Divide by zero. In C:\MATLAB6p1\toolbox\matlab\elfun\acot.m at line 8 In C:\MATLAB6p1\work\ark1.m at line 5 ale protože toto hlášení je černé a MATLAB něco kreslí, tak studující, kteří tuto funkci neznají, mají tendenci chybu ignorovat a opět si chybně myslí, že mají správný graf. Chyba upozorňuje pouze na dělení nulou a bohužel, ani po jejím odstranění, nedostanete správný graf. Takový graf by vypadal tak, jak je zobrazen na obr. 1.5. Novější i nejnovější verze MATLABu Vám v příkazové řádce nehlásí žádnou chybu a tak si téměř všichni studující, kteří tuto funkci neznají, myslí, že mají správný graf, což bohužel není pravda. 17

Obr. 1.5: Druhý pokus o graf funkce arkuskotangens Správný graf je až na následujícím obrázku: Vidíte tedy, že hodnota ( 5) graf vypadá takto: Obr. 1.6: Graf funkce arkuskotangens arccot musí být téměř. A jak je to s funkcí kotangens? Její 18

Obr. 1.7: Graf funkce kotangens Vidíte tedy, že funkční hodnota cot(h ), kde h 0,197 4 je přibližně 5, ale správnou funkční hodnotu arccot ( 5) musíte vypočítat pomocí příkazu: acot(-5)+pi a konečně obdržíte správný výsledek: ans =.944 Pokud by vás zajímalo, jak se výše uvedené grafy nakreslí, tak si prostudujte m-soubory ark1.m, ark.m, ark.m a ark4.m. Pokud byste si chtěli vytvořit vlastní funkci, která bude počítat i kreslit správně funkci arccot x, tak si stačí napsat níže uvedený m-soubor arccot.m, a pak stačí zadat příkaz: h=arccot(-5) a obdržíte výsledek: h =.944 arccot.m function[y]=arccot(x) y=pi/-atan(x); protože pro libovolné reálné číslo platí, že arccot x =π arctan x. Z tohoto důvodu se také v praxi s funkcí arccot x téměř nesetkáte, zato s funkcí arctan x se setkáte velice často. Protože definiční obor funkce arctan x je celé R, tak je to nejčastěji používaná cyklometrická funkce. 1.1.8 Převod radiánů na stupně, minuty a vteřiny Příklad 1.7: Převod radiánů na stupně, minuty a vteřiny Víte, že ϕ = x ϕ 0; π v radiánech a ve stupních, minutách a vteřinách, cos, jaký je úhel ( ) jestliže x je postupně ; 0,45 8; 0,687 4? 19

Řešení Nejprve zadejte do MATLABu první hodnotu x, tj. napište příkaz: x=-sqrt()/ zobrazí se Vám: x = -0.8660 pak vypočítejte úhel z v radiánech, tj. napište příkaz: z=acos(x) získáte výsledek: z =.6180 který je samozřejmě v radiánech. Protože 180..π radiánů, x., 618 0 radiánů,,618 0 tak x 180 ve stupních. Když zadáte příkaz: π y=180*z/pi nebo: y=180*acos(x)/pi tak dostanete výsledek: y = 150.0000 který je již ve stupních. Podobně zadejte příkaz: x=0.458 zobrazí se Vám: x = 0.458 po zadání příkazu: z=acos(x) dostanete: z = 1.5 což je v radiánech. Po zadání příkazu: z=180*z/pi dostanete: z = 75.7709 ve stupních, ale výsledek je nutné ještě převést na minuty a vteřiny. Protože 1. 60 minut, 0,770 9 x minut, tak 0,770 9 x 60 minut. Když zadáte příkaz: 1 0.7709*60 dostanete : ans = 46.540 minut, ale tím jste se dopustili dosti velké nepřesnosti, protože jste použili pouze čtyři 0

desetinná místa, která vidíte, tedy číslo zaokrouhlené na čtyři desetinná místa. Vhodnější a přesnější je proto použít příkaz: m=(z-75)*60 a obdržíte výsledek: m = 46.50 minut a analogicky pak provedete převod na vteřiny. Zadáte příkaz: (m-46)*60 dostanete : ans = 15.1818 vteřin. Podobně pro poslední hodnotu x, ale již rychleji. Zadejte nejprve příkazy: x=-0.6874;z=acos(x), a obdržíte hledaný výsledek v radiánech: z =.87 nyní zadejte příkaz: z=180*z/pi a dostanete výsledek ve stupních z = 1.446 nyní zadejte příkaz: m=(z-1)*60 a dostanete počet minut: m = 5.4788 po zadání příkazu: (m-5)*60 získáte, po zaokrouhlení na celky, příslušný počet vteřin 8.795 Výsledek Jestliže x =, tak úhel ϕ,618 0 radiánů, což je 150 0 0. Jestliže x = 0,45 8, pak úhel ϕ 1, 5 radiánů, což je přibližně 75 46 15. Jestliže x = 0,687 4, pak úhel ϕ,8 7 radiánů, což je přibližně 1 5 9. Na svých kalkulačkách máte většinou možnost přepnout klávesnici tak, abyste mohli argumenty goniometrických funkcí (úhly) zadávat přímo ve stupních a také tak, abyste hodnoty inverzních funkcí (cyklometrických) získali rovnou ve stupních, minutách a vteřinách. Nemusíte tedy myslit na převodní vztahy a nemusíte s nimi vůbec pracovat. V MATLABu tomu tak není, musíte s převodními vztahy pracovat, a to se většině z Vás nelíbí. Určitě byste přivítali nějaké tlačítko, které by fungovalo podobně, jako Vaše kalkulačka. Bohužel, o takovém tlačítku nevím, ale můžete si vytvořit nové goniometrické funkce, do kterých lze zadávat úhel přímo ve stupních a nové cyklometrické funkce, ze kterých získáte hledaný úhel přímo ve stupních, minutách a vteřinách. Než Vám ale vytvoření těchto nových funkcí ukáži, tak si vytvoříte jednoduchý m-soubor, který, po zadání hodnoty x = cosϕ, Vám na monitor vypíše velikost úhlu ϕ přímo ve stupních, minutách a vteřinách. 1

K zamyšlení 1.4 K čemu Vám to bude? Použijete to někdy? Řešení Když jste počítali úhel dvou vektorů u, v, tak jste používali vzorec počítali vnitřní úhel v trojúhelníku, tak jste používali stejný vzorec cos ϕ = cos ϕ = u v. Když jste u v u v. Když jste u v počítali úhel dvou přímek, tak jste nalezli směrové vektory u, v, obou přímek a použili vztah u v cos ϕ =. Když jste hledali úhel dvou rovin, tak jste nalezli normálové vektory obou u v rovin u, v a použili vztah cos ϕ = u v. Když jste hledali úhel, který svírá přímka s rovinou, u v tak jste nalezli směrový vektor přímky u, normálový vektor roviny v a použili vztah u v u v π sin ϕ =, nebo jste vypočítali cos ψ = a hledaný úhel ϕ = ψ. Vidíte tedy, že u v u v ve všech výše uvedených případech jste nejprve získali hodnotu cos ϕ a Vašim úkolem bylo nalézt úhel ϕ ve stupních, minutách a vteřinách. Ve všech výše uvedených případech byste tedy s výhodou použili tento m-soubor a v PC ho použijete k vytvoření některých nových funkcí, v řešení DU1 a ve cvičení věnovaném vektorům. Příklad 1.8: Program prevodx.m Napište program (m-soubor, skript), který při zadání hodnoty velikost úhlu ( 0; π) ϕ ve stupních, minutách a vteřinách. x = cosϕ vypíše na monitor Řešení V otevřeném okně staré verze MATLABu zvolte na nástrojové liště nabídku File, podnabídku New a zde nabídku M-file. Otevře se Vám nové okno, do kterého budete psát níže uvedené příkazy. V otevřeném okně novější verze MATLABu zvolte na nástrojové liště nabídku File, podnabídku New a zde nabídku Black M-File. Opět se Vám otevře nové okno, do kterého budete psát níže uvedené příkazy. U nejnovější verze MATLABu máte na nástrojové liště přímo nabídku New, vyberete podnabídku Skript a napíšete následující příkazy: z=acos(x); z=180*z/pi; stupnu=fix(z); p=(z-stupnu)*60; minut=fix(p); vterin=round((p-minut)*60); stupnu,minut,vterin, Těchto sedm řádků uložte pod názvem prevodx (File, Save As, do Název souboru napíšete prevodx a Uložit). Pokud máte MATLAB nainstalován pod operačním systémem Windows XP, tak ve staré verzi MATLABu se Vám soubor implicitně uloží na Váš disk do adresáře Matlab6p1/work. Novější i nejnovější verze MATLABu vytvoří na Vaší ploše (Document and Settings/uživatel) v implicitním adresáři Dokumenty adresář MATLAB a soubor se uloží do něho. Z těchto adresářů se také všechny m-soubory implicitně spouštějí. Pokud si budete chtít m-soubory ukládat na jiné místo, tak je to možné, ale musíte si pak nastavit například Current Directory (na nástrojové liště otevřeného okna MATLABu) do tohoto adresáře. Chcete-li tedy nalézt velikost úhlu ϕ, pro který platí, že cos ϕ = 0,45 8, tak stačí do příkazového řádku MATLABu napsat:

x=0.458;prevodx a obdržíte hledaný výsledek: stupnu = 75 minut = 46 vterin = 15 Co znamenají jednotlivé řádky m-souboru a jednotlivé příkazy? V prvním řádku do proměnné z uložíte vypočítaný úhel z v radiánech pomocí funkce acos. Ve druhém řádku převádíte radiány na stupně, které jsou ale vyjádřeny desetinným číslem z. Funkce fix(z) odtrhne, bez zaokrouhlení, celou část desetinného čísla a toto celé číslo, které představuje celé stupně, uloží do proměnné stupnu. Ve čtvrtém řádku odečtete od z (stupně vyjádřené desetinným číslem) stupně, takže máte pouze číslice za desetinnou čárkou, a abyste dostali minuty, tak je vynásobíte 60. Desetinné číslo, které představuje minuty, uložíte do proměnné p. V pátém řádku funkcí fix(p) odtrhnete celou část desetinného čísla p, které představuje minuty a uložíte ho do proměnné minut, máte tedy v proměnné minut celé minuty. V předposledním řádku od desetinného čísla, představujícího minuty, odečtete celé minuty, vynásobíte 60, čímž dostanete vteřiny. Abyste nedostali vteřiny jako desetinné číslo, tak zároveň funkcí round zaokrouhlíte, běžným matematickým způsobem, toto číslo a uložíte do proměnné vterin. V prvním až šestém řádku jste na konci napsali středník, což znamená, že se tyto pomocné výpočty nebudou zobrazovat na monitoru. V posledním řádku jste za všechny proměnné napsali čárku, takže se na monitor jejich hodnoty vypíší. V příkazovém řádku MATLABu musíte nejprve do proměnné x uložit hodnotu funkce kosinus, což jste učinili příkazem x=0.458 a pak jste spustili m-soubor prevodx.m. Název jsem volila tak, aby i za půl roku bylo zřejmé, že tento m-soubor něco převádí, a že to, co převádí, je v proměnné x. Výsledek Výsledkem je m-soubor prevodx.m, který při zadání hodnoty velikost tohoto úhlu ϕ ve stupních, minutách a vteřinách. x = cosϕ zobrazí na monitoru K zamyšlení 1.5 Co se stane, pokud byste místo příkazu x=0.458;prevodx napsali pouze příkaz 0.458;prevodx? Řešení S velkou pravděpodobností by Vám vyšlo, že hledaný úhel ϕ je přibližně 1 5 9. Proč? Protože jste do proměnné x neuložili číslo 0,45 8, tak MATLAB použil to, co mu zůstalo v x uloženo. Protože naposledy jste napsali x=-0.6874, tak v proměnné x máte uloženo číslo 0,687 4. Váš program prevodx tedy nalezne hodnotu úhlu, jehož kosinus je roven 0,687 4 a ne 0,45 8. Pokud se Vám tedy v MATLABu stane, že nedostáváte odpovídající výsledky, tak je dobré nejprve smazat všechny proměnné. U obrázků je zase vhodné, zavřít všechny obrázky atd. Tyto jednoduché, ale důležité příkazy jsou uvedeny v tab. 1.6. Tab. 1.6: Užitečné příkazy MATLABu Příkaz path clear close pause Význam nastaví vyhledávací cestu, například do jiného pracovního adresáře vymaže z paměti všechny proměnné a funkce zavře grafické okno pozastaví probíhající proces, nejčastěji m-soubor

Poznámka 1.: Poznámky v m-souboru Až budete psát své vlastní m-soubory, tak můžete někdy potřebovat, zvláště u složitějších programů, napsat poznámku přímo do m-souboru. V tom případě stačí na začátek řádku napsat symbol % a to, co bude následovat za tímto symbolem, až do konce řádky, MATLAB neprovádí, verifikuje to jako poznámku a tento text, včetně symbolu %, navíc zvýrazní zelenou barvou. Nyní se vrátíme k vytvoření nových goniometrických funkcí, do kterých byste mohli úhly zadávat přímo ve stupních a k vytvoření nových cyklometrických funkcí, ze kterých získáte hledaný úhel přímo ve stupních, minutách a vteřinách. Tip 1.5: Nové goniometrické a cyklometrické funkce Nejprve vytvoříme novou goniometrickou funkci dsin, do které bude možné zadávat úhly přímo ve stupních. Napište si tedy tento m-soubor: dsin.m function[y]=dsin(x); y=sin(pi*x/180); Když nyní do příkazové řádky napíšete: dsin(0) tak se Vám zobrazí hodnota sin ( 0 ) ans = 0.5000 Podobně vytvoříte ostatní funkce dcos, dtan, dcot: dcos.m function[y]=dcos(x); y=cos(pi*x/180); dtan.m function[y]=dtan(x); y=tan(pi*x/180); dcot.m function[y]=dcot(x); y=cot(pi*x/180); U cyklometrických funkcí arcsin, arccos a arctan nenarazíte na žádný problém a využijete všech sedm řádků z m-souboru prevodx.m dasin.m function[y]=dasin(x); z=asin(x); z=180*z/pi; stupnu=fix(z); p=(z-stupnu)*60; minut=fix(p); vterin=round((p-minut)*60); stupnu,minut,vterin, dacos.m function[y]=dacos(x); z=acos(x); z=180*z/pi; stupnu=fix(z); p=(z-stupnu)*60; minut=fix(p); vterin=round((p-minut)*60); stupnu,minut,vterin, 4

datan.m function[y]=datan(x); z=atan(x); z=180*z/pi; stupnu=fix(z); p=(z-stupnu)*60; minut=fix(p); vterin=round((p-minut)*60); stupnu,minut,vterin, O funkci arccot x, která je předdefinována v MATLABu (acot(x)) víte, že neodpovídá tomu, jak je definována v matematice. Obě definice se shodují pouze pro kladná reálná čísla. Při použití předdefinované funkce acot(x) byste tedy dostali shodné výsledky pouze pro kladné hodnoty (Varování 1.). Aby Vaše funkce arccot x odpovídala matematické definici, tak pro vytvoření této funkce využijete navíc m-soubor arccot.m. dacot.m function[y]=dacot(x); z=pi/-atan(x); end; z=180*z/pi; stupnu=fix(z); p=(z-stupnu)*60; minut=fix(p); vterin=round((p-minut)*60); stupnu,minut,vterin, K zamyšlení 1.6 Co když budete mít úhel zadán nejen ve stupních, ale i v minutách a vteřinách? Jak například úhel 5 4 4 zadáte do funkce dsin? Řešení Máte dvě možnosti. Buď zadaný úhel převedete na stupně, nebo si vytvoříte funkci ddsin, do které byste mohli přímo vkládat stupně, minuty i vteřiny. Jak převedete 5 4 4 na stupně? 4 4 4 Uvědomte si, že 4 je ve skutečnosti stupně a 4 je minuty, což je stupně. 60 60 600 4 4 Tedy 5 4 4 je 5 + + 5,57 stupňů. Do příkazové řádky MATLABu stačí 60 600 zadat příkaz: dsin(5+4/60+4/600) a obdržíte výsledek: ans = 0.417 Druhá možnost je vytvoření funkce ddsin, stačí napsat tento m-soubor: ddsin.m function[y]=ddsin(x,y,z); y=sin((x+y/60+z/600)*pi/180); pak stačí zadat příkaz: ddsin(5,4,4) a obdržíte stejný výsledek: 0.417 Poznámka 1.4: Klíčová slova v m-souboru Pokud patříte mezi zvídavé a zkusili jste si některé nepovinné m-soubory napsat, nebo jste si zkusili napsat alespoň výše uvedené nové goniometrické a cyklometrické funkce, tak jste 5

zjistili, že některá slova změní barvu. Například tzv. klíčová slova jako je function, if, else, end atd. se Vám zabarví modře a dokonce se Vám tato slova odsadí, aby bylo na první pohled vidět, která klíčová slova k sobě patří. Text, který napíšete do uvozovek, se Vám ve staré verzi MATLABu zabarví hnědočerveně, v novějších verzích fialovomodře. V novějších verzích MATLABu se Vám stejnou fialovomodrou barvou budou zabarvovat i slova jako square, on, off atd. Toto barvené rozlišení s případným odsazením Vám ihned napoví, kde jste udělali syntaktickou chybu a pomůže Vám nalézt i chybu logickou. Varování 1.4: Názvy m-souborů 1. MATLAB rozlišuje velká a malá písmena. Napíšete-li pr, Pr, PR, pr, tak jsou to čtyři různé proměnné a ne jedna.. Na začátku názvu m-souboru musí být nějaké písmeno, ne číslice.. Název m-souboru musí splňovat stejná pravidla jako název proměnné Varování 1.1. Nelze proto používat v názvech m-souborů háčky, čárky, mezery atd., protože by Vám pak m-soubory nešly spustit. 4. Není vhodné používat zkratky anglických názvů. Neznáte všechny předdefinované funkce v MATLABu a tak by se Vám snadno mohlo stát, že použijete název, který patří předdefinované funkci. V tomto případě se MATLAB bude snažit vykonat předdefinovanou činnost. Pak buď budete mít štěstí a nebude souhlasit ani počet parametrů a Vy tak poznáte, co se stalo. Nebo náhodou bude souhlasit počet parametrů a pak budete získávat nepochopitelné výsledky a těžko hledat chybu. Například v motivačním příkladě byla použita kvadratická funkce, kterou jsem nazvala mot. Nejmenovanému studentovi se tento název nelíbil, a protože se do angličtiny kvadratická funkce dá přeložit jako quadratic function, tak funkci nazval quad. Co se stalo? Při napsání a uložení m-souboru vůbec nic, ale při pokusu funkci zobrazit, nebo vypočítat funkční hodnotu, dostal pouze chybová hlášení. Proč? Protože quad je název předdefinované funkce, která počítá určitý integrál, což je vidět u motivačního příkladu u výpočtu obsahu plochy. 5. Doporučuji používat zkratky českých názvů bez háčků a čárek. Než nějaký m-soubor odladíte, tak s výhodou můžete používat názvy jako pok, pok1, pok atd. AUTOTEST 8 5 1. Vypočítejte funkční hodnoty polynomu p = x + 14x + 7x + 1x 15, pro x = 1,, 5, 8, 1,, 5, 7, 8, 11, 1.. Vypočítejte čtvrtou odmocninu ze dvou třetin, sedmou odmocninu ze sedmnácti čtvrtin a dvacátou odmocninu ze sedmi devítin.. Vypočítejte sedmou odmocninu ze součtu druhé mocniny 8 a druhé odmocniny ze 7. 4. Vypočítejte logaritmus o základu 1 z čísla 4,85. Určete přirozený a dekadický logaritmus čísla 4,85. 5. Vypočítejte sinus, kosinus, tangens a kotangens 48 5 7. Výsledky udávejte s přesností na čtyři desetinná místa. 6. Vypočítejte e 7 5 + e e s přesností na 8 desetinných míst. 7. Víte, že sin z = 0,64 8. Vypočítejte tento úhel z nejprve v radiánech a pak ve stupních, minutách a vteřinách. 8. Napište program, který ze znalosti sinu úhlu ( 0; π) z určí tento úhel nejprve v radiánech a pak ve stupních, minutách a vteřinách a na monitor zobrazí výsledek jak v radiánech, tak i ve stupních, minutách a vteřinách. 9. Uveďte alespoň jeden příklad, kde lze využít program prevodx.m. 10. Jaký výsledek by se měl zobrazit na monitoru, napíšete-li do příkazového řádku MATLABu následují text? pr=5+1-7;pr=1-5*;pr=pr;pr+pr 6

Řešení 1. p=[1,0,0,14,0,0,7,1,-15];polyval(p,1), ans = -91 polyval(p,), ans = 997 polyval(p,5), ans = 44485 polyval(p,8), ans = 17687 polyval(p,1), ans = 809007 polyval(p,-), ans = 061 polyval(p,-5), ans = 46865 polyval(p,-7), ans = 55967 polyval(p,-8), ans = 1618691 polyval(p,-11), ans = 1104757 polyval(p,-1) ans = 810551. (/)^(1/4), ans = 0.906 (17/4)^(1/7), ans = 1.96 (7/9)^(1/0) ans = 0.9875. (8*8+sqrt(7))^(1/7) ans = 1.80 4. log(4.85)/log(1), ans = 0.5856 log(4.85), ans = 1.4551 log10(4.85) ans = 0.60 5. x=(48+5/60+7/600)*pi/180 x = 0.8481 sin(x), ans = 0.7500 cos(x), ans = 0.6614 tan(x), ans = 1.19 cot(x) ans = 0.8819 7

6. v=exp(7)+exp()-exp(5);numstr(v,11), ans = 968.05565 7. z=asin(0.648) z = 0.6749 v radiánech z*180/pi ans = 8.6675 ve stupních 0.6675*60 ans = 40.0500 0.0500*60 ans = 8. prevodasinx.m z=asin(x); radianu=z; z=180*z/pi; stupnu=fix(z); p=(z-stupnu)*60; minut=fix(p); vterin=round((p-minut)*60); radianu,stupnu,minut,vterin, V MATLABu stačí zadat: x=0.648;prevodasinx radianu = 0.6749 stupnu = 8 minut = 40 vterin = 9. Například když počítáte úhel dvou vektorů, úhel dvou přímek, vnitřní úhly trojúhelníka, úhel přímky s rovinou, úhel dvou rovin atd. 10. pr = 0, Pr =, pr =, Pr + pr = = 6. Objeví se číslo 6. Výsledek 1. Hodnoty jsou p(1) = 91, p() = 9 97, p(5) = 44 485, p(8) = 17 6 87, p(1) = 80 90 07, p( ) = 061, p( 5) = 46 865, p( 7) = 5 59 67, p( 8) = 16 18 691, p( 11) = 1 104 757, p( 1) = 810 5 51.. Čtvrtá odmocnina ze dvou třetin je přibližně 0,90 6, sedmá odmocnina ze sedmnácti čtvrtin je přibližně 1,9 6 a dvacátá odmocnina ze sedmi devítin je přibližně 0,987 5.. Sedmá odmocnina ze součtu druhé mocniny 8 a druhé odmocniny ze 7 je přibližně 1,8 0. 4. Logaritmus o základu 1 z čísla 4,85 je přibližně 0,585 6, přirozený logaritmus tohoto čísla je přibližně 1,455 1 a jeho dekadický logaritmus je přibližně 0,6 0. 5. Sinus 48 5 7 je přibližně 0,750 0, kosinus tohoto úhlu je přibližně 0,661 4, tangens 1,1 9 a kotangens 0,881 9. 6. e 7 5 + e e je s přesností na 8 desetinných míst rovno 968,05 56 5. 7. Úhel z je přibližně 0,674 9 radiánů, což je přibližně 8 40. 8. prevodasinx.m z=asin(x); radianu=z; z=180*z/pi; stupnu=fix(z); 8

p=(z-stupnu)*60; minut=fix(p); vterin=round((p-minut)*60); radianu,stupnu,minut,vterin, 9. Například když počítáte úhel dvou vektorů, úhel dvou přímek, vnitřní úhly trojúhelníka, úhel přímky s rovinou, úhel dvou rovin atd. 10. Objeví se číslo 6. Shrnutí V této první kapitole jste viděli, jak lze využít program MATLAB při hledání obsahu plochy a naučili jste se: 1. vypočítat funkční hodnotu polynomu,. počítat hodnoty odmocnin,. počítat hodnoty algebraických výrazů, které obsahují mocniny a odmocniny, 4. počítat funkční hodnoty logaritmických výrazů, 5. počítat hodnoty výrazů, které obsahují exponenciální funkci, 6. počítat hodnoty goniometrických a cyklometrických funkcí, 7. převádět stupně na radiány, 8. převádět radiány na stupně, minuty a vteřiny, 9. napsat jednoduchý m-soubor, který ze znalosti hodnoty kosinu úhlu určí tento úhel ve stupních, minutách a vteřinách. Naučili jste se tedy používat MATLAB jako kalkulačku, která Vám vypočítá hodnotu jakéhokoliv algebraického výrazu a poznali jste, jak v tomto prostředí napsat jednoduchý m-soubor. Další zdroje MATLAB CREATIVE TEAM. MATLAB The Language of Technical Computing. USA: Natick, The MathWorks, Inc., November 000. Fifth printing. MA 01760-098 USA. POLCEROVÁ, Marie. Doprovodný text k počítačovým cvičením Matematika I. Brno: Fakulta chemická, Vysoké učení technické v Brně, 001. POLCEROVÁ, Marie a Jaroslav BAYER. Analytická geometrie v příkladech. Brno: Vysoké učení technické v Brně, Fakulta chemická, 004, ISBN 80-14-179-5. POLCEROVÁ, Marie. Prezentace cvičení č. 1. In: Vysoké učení technické v Brně, e-learning, Kurz: Matematika I (BCT_MAT1 15/16Z) [online], 015 [cit. 015-09-19]. Dostupné z: https://moodle.vutbr.cz/ POLCEROVÁ, Marie. Prezentace cvičení č. 1. In: Fakulta chemická Vysokého učení technického v Brně, Matematika I [online], 015 [cit. 015-09-0]. Dostupné z: https://www.fch.vutbr.cz/~polcerova/ Klíčová slova M-soubor MATLAB umožňuje provést posloupnost příkazů uložených v souborech na disku. Tyto soubory se nazývají m-soubory, protože musí mít příponu m. Z příkazové řádky MATLABu se spouští napsáním jména souboru bez zmíněné přípony. Existují dva typy m-souborů: skriptové soubory (skripty) a funkční soubory (funkce). Skriptový soubor (skript) se skládá z posloupnosti běžných MATLABovských příkazů. Máte-li např. m-soubor rotat.m, pak, když napíšete rotat v příkazové řádce MATLABu, tak se Vám provedou všechny příkazy obsažené v m-souboru rotat.m. Proměnné ve skriptovém souboru jsou chápány jako globální a vždy změní hodnotu proměnných se stejným jménem, které byly definovány lokálně během práce v MATLABu. M-soubor může obsahovat odkazy na jiné m-soubory, včetně rekurzivního odkazu na sebe sama. 9