Výpočetní technika II - Algoritmizace v systému MATLAB Aktualizace: 11. prosince 2000


Navigační menu
  Vysvětlivky
  Obsah
  Kapitola 1: Matlab
       Kapitola 1.1: Úvod
       Kapitola 1.2: Režimy práce
  Kapitola 2: Skaláry, vektory, matice
       Kapitola 2.1: Operace
       Kapitola 2.2: Funkce
       Kapitola 2.3: Submatice
  Kapitola 3: Vytváření funkcí
  Kapitola 4: Větvení a rozhodování
  Kapitola 5: While cyklus
  Kapitola 6: For cyklus
  Kapitola 7: Objekty a 2-D grafika
  Kapitola 8: 3-D grafika
  Kapitola 9: Datové soubory
       Kapitola 9.1: Ukládání do souboru
       Kapitola 9.2: Načtení ze souboru
       Kapitola 9.3: Import dat z Excelu
  Kapitola 10: Symbolická matematika
  Kapitola 11: Řešení rovnice f(x)=0
  Kapitola 12: Soustavy lineárních rovnic
  Kapitola 13: Minimum funkce f(x)
  1. Matlab  

  1.1. Úvod aneb co a k čemu je MATLAB  

  Sčítat a násobit - to zvládne každý poměrně rychle. Trochu pomalejší je to např. s numerickým řešením různých problémů. Zde je namístě zformulovat problém matematicky a přenechat výpočet počítačům. Je mnoho programů, které zvládnou řešení takových úkolů, určitě znáte např. Excel. Možností výběru vhodného výpočetního prostředí máte mnoho. Jednou z nich je MATLAB. Ten umožňuje rychlou práci s maticemi a komplexními čísly. Získané výsledky si můžete nechat libovolným způsobem graficky znázornit. MATLAB vám umožní zpracovávat data z nejrůznějších oborů lidské činnosti, a to díky široké škále již hotových funkcí - stačí jen pročíst nápovědu. (Někdy je tomu potřeba věnovat pár dlouhých zimních večerů a autoři nápovědy přirozeně předpokládali, že umíte alespoň trošku anglicky). Umíte-li sestavovat algoritmy, vaše pole působnosti se velmi rozšíří (stačí si jen zvyknout na základní syntaxi příkazů a pochopit práci s maticemi). Chcete-li si např. nakreslit graf funkce dvou proměnných anebo si ušetrit práci s počítáním integrálů, neváhejte a začněte objevovat skrytá zákoutí MATLABu, této "matematické laboratoře". Možná časem zjistíte, že ne všechno vyřeší MATLAB dostatečně rychle, ale naučit se jej používat je dobrým začátkem Vaší budoucí praxe.  
-dm-  
  Základní postulát úspěšného zvládnutí Matlabu:
Matlab vychází z následující filozofie: vše je matice. Má-li jednu řádku nebo jeden sloupec, říká se jí vektor, má-li právě jednu řádku a jeden sloupec, je to skalár.
 

  1.2. Režimy práce  

  Dialogový režim  
 
  • Je přístupný v okně command window
  • Příkazy se ihned vykonávají
  • Přiřazovací příkaz se přirozeně provádí pomocí rovnítka =
  • Existuje proměnná ans, která je k dispozici vždy a ukládá se do ní výsledek výpočtu v případě, že není nazván jinak
  • Pokud chcete potlačit zobrazení výsledku, napište za příkaz středník
  • V tomto režimu je možno Matlab používat jako více méně inteligentní kalkulačku s funkcemi
  • Argumenty funkcí se dávají vždy do kulatých závorek
  • Je možno jednoduše generovat vektory či matice, řádky se oddělují středníkem, sloupce čárkou, při výčtu prvků se používají hranaté závorky
  • Operace – základní +, -, *, /, ^ (umocnění) – podrobně budou probrány v další lekci
  • Jednoduše je možno matice či vektory transponovat pomocí apostrofu
 

  Příklad 1A.1:  
  Generujte vektor a přirozených čísel od 1 do 50  
  Řešení:  
        a=1:50  

  Příklad 1A.2:  
  Generujte vektor b, který bude obsahovat racionální čísla od 1 do 10 s krokem 0.2  
  Řešení:  
        b=1:0.2:10  

  Příklad 1A.3:  
  Generujte matici A o rozměrech 3x3, která bude obsahovat samé jednotky a nulovou matici B stejných rozměrů  
  Řešení:  
        A=ones(3,3)
      B=zeros(3,3)
 

  Příklad 1A.4:  
  Generujte matici C o rozměrech 3x3, která bude obsahovat následující prvky:
          1, 2, 3
          4, 5, 6
          7, 8, 1
 
  Řešení:  
        C=[1,2,3;4,5,6;7,8,1]  

  Příklad 1A.5:  
  Transponujte matici C, vektory a a b  
  Řešení:  
        C', a', b'  

 
  • Použité proměnné se zachovávají v paměti, lze je vypsat příkazem who, s jejich rozměry pak příkazem whos
  • Proměnné je možno mazat příkazem clear název_proměnné, všechny pak příkazem clear all (uplatní se později v programovém režimu)
 

  Programový režim  
 
  • Pracuje se zvláštním editorem – debuggerem
  • Je možno a doporučeno používat komentáře, uvozují se znakem % (procento). Vše za procentem do konce řádku je považováno za komentář a ignoruje se
  • Příkazy je možno oddělovat čárkou nebo středníkem
  • Do programového režimu se lze dostat následujícími cestami:
    a) ikona či příkaz menu Command window pro otevření nového souboru
    b) otevření již existujícího programového souboru v Matlabu (dvojkliknutí myší – double click)
    c) ikona či příkaz menu Command window pro otevření již existujícího programového souboru v Matlabu
  • Soubor je před spuštěním nutno uložit na disk a pojmenovat (nevolte ve svém vlastním zájmu divoké názvy)
  • Soubor se spouští v okně Command window zapsáním názvu souboru
  • Vyučující vás seznámí s tím, na které disky máte povoleno své soubory ukládat
  • Je vhodné nastavit si na příslušný disk cestu pomocí ikony Path Browser
  • Pro jednoduché zobrazení výsledků lze použít příkaz plot(x,y)
 

  Příklad 1A.6:  
  V programovém režimu tabelujte funkce sinus a kosinus pro x z intervalu <0, 2> s krokem /20  
  Řešení:  
        x=0:pi/20:2*pi;
      y1=sin(x); y2=cos(x);
      plot(x,y1,x,y2)
 

  Grafický režim  
 
  • Grafika bude podrobně probrána samostatně
  • Používá se samostatné grafické okno Figure
  • Příkazem figure lze otevřít nové okno
  • Příkazem close lze zavřít poslední aktivní grafické okno, vyplatí se používat na počátku programů příkaz close all
  • Pro základní zobrazení se používá příkaz plot(x,y), kde x a y jsou sloupcové vektory
  • Podrobnější informace lze nalézt pomocí příkazu help plot
  • CS'>Pro určení barvy zobrazovaných dat se příkaz modifikuje do tvaru plot(x,y,'l'), kde l je zkratka barvy zobrazovaných dat
  • Pro modifikaci typu čáry či volbu zobrazení pomocí značek se příkaz modifikuje do tvaru plot(x,y,'z'), kde z je zkratka typu čáry či značky
  • Oba předchozí příkazy lze kombinovat jako plot(x,y,'lz')
  • Pro přidání pomocného měřítka se použije příkaz grid
  • Pro změnu rozsahu zobrazení se použije příkaz axis([xmin, xmax, ymin, ymax])
  • Osy lze popsat pomocí příkazů xlabel('text'), ylabel('text')
  • Celý graf lze popsat pomocí příkazu title('text')
 

  Příklad 1A.7:  
  Tabelujte a znázorněte funkce y1 = ex, y2 = e2x, y3 = ex/2 na intervalu <-1, 1> s krokem h=0.1  
  Řešení:  
 
   clear all; close all  
   a=-1; b=1;    % meze intervalu
   h=0.1;    % krok
   x=a:h:b; x=x';  
   y1=exp(x); y2=exp(2*x); y3=exp(x/2);  
   plot(x,[y1 y2 y3])    % graficka vylepseni
   grid    % mrizka
   axis([-1 1 0 10])    % meritko
   xlabel('x'), ylabel('f(x)'),   
   title('Exponencialni funkce')   
   plot(x,y1)   
   figure    % nove okno pro grafiku
   plot(x,y2,'r.')    % styl zobrazeni
   hold on    % drzeni okna
   plot(x,y1,'b:')    % styl zobrazeni
 

  Příklady pro samostatné vypracování  
  Příklad 1B.1:  
  Tabelujte a graficky znázorněte funkci y=2x na intervalu <-5;5> s krokem h=0.25  

  Příklad 1B.2:  
  Graficky znázorněte průběh funkce y = (3sin(a)cos(a))/(sin3(a)+cos3(a)) na intervalu <0; /2> s krokem /100  

  Příklad 1B.3:  
  Graficky znázorněte průběh funkce y = -cos(2a)/cos(a) na intervalu <0; /4> s krokem /100  

  Příklad 1B.4:  
  Tom je pyšný, že našel o 3 valouny zlata více, než Joe. Jima mrzí, že má o 2 valouny méně, než Sam. Fred našel tolik, kolik mají Jim a Sam dohromady. Tom s Joem si za svých společných 24 valounů chtějí koupit vilu na Canaria Islands. Celá parta vytěžila dohromady 44 valounů. Kolik tedy kdo má?  

  Příklad 1B.5:  
  Babička poslala svým třem vnukům koš ořechů. Měli rozdělit počet ořechů v poměru věku všech tří. Když je rozdělili, zjistili, že Karel má tolik jako Ivan a ještě třetinu toho, co měl Vašek. Vašek měl tolik, co Karel a ještě třetinu podílu Ivana. Ivan měl 20 ořechů a třetinu Karlova podílu. Spočtěte:
a) kolik bylo v koši ořechů
b) kolik měl každý z chlapců
c) kolik jim bylo let
 

  Příklad 1B.6:  
  Na louce byly slepice a krávy. Měly dohromady 100 hlav a 300 nohou. Kolik bylo kterých?  

  Příklad 1B.7:  
  Součet věku otce a syna je 80 let. Před osmi lety byl otec 3x starší než syn. Kolik je jim let?  

  Seznam použitých příkazů  
  ans, who, whos, clear, plot, figure, close, grid, axis, xlabel, ylabel, title  



© 2000 by Darina Bártová, Jaromír Kukal, Martin Pánek

Testováno v prohlížečích MSIE 5.x a NN 4.x při rozlišení 1024x768x256