% ===> PREAMBLE
\documentclass [twoside,reqno,12pt,titlepage]{article}[1999/01/07 v1.4a Standard]
%\usepackage{grant}
%\usepackage[cp1250]{inputenc} %kodovani Windows, abychom mohli jednoduse psat diakriticka pismena
\usepackage{amsmath,amssymb,amsxtra,amscd}

\usepackage{latexsym,verbatim,alltt}
\usepackage{czech}
\usepackage{graphicx}

% umoznení hypertextovych odkazu
\usepackage[bookmarks=false,pdfborder=0 0 0]{hyperref}
%\listfiles

%\pagestyle{empty}
\pagestyle{headings}
\hoffset    = -3mm
% for the a4paper option:
\hoffset    = -14mm
\voffset    = -20mm
\textwidth  = 155mm
\textheight = 245mm

% ---> DEFINE THE COMMAND \file AND \bst FOR FULL-PATH REFERENCE OF INPUT FILES:
% (Modify if necessary)
\newcommand{\file}[1]{c:/emtex.utl/cslatex/#1}
\newcommand{\bst}[1]{#1}
\renewcommand{\refname}{Literatura}

% ===> DECLARATION SECTION

% ---> THEOREM STYLES
%\newcommand{\theoremstyle}[1]{}     %  dummy
%\newenvironment{proof}{{\em Důkaz.}}{\strut \hfill $\square$\\}
% \newcommand{\resettheoremcounter}{subsection}
%\input{\file{artdefcz}}  % Czech style
% \renewcommand{\thexthm}{\arabic{xthm}}

% ---> COMMAND SECTION
\newcommand{\dash}{\nobreakdash-}   %  single dash suppressing hyphenation
\newcommand{\ddash}{\nobreakdash--} %  double dash suppressing hyphenation
%\numberwithin{equation}{section}
% redefining \rm to mean: change to roman style
\renewcommand{\rm}{\normalshape}

% ---> MATH SYMBOL DEFINITION SECTION
\input{\file{mathfont}}
%\input{model}                       %  defines commands \polfs and \polper

\begin{document}

% ===> TOP MATTER
\title{Matematické výpočetní systémy$^1$}
\author{Doc. RNDr. V\'{\i}t\v{e}zslav Vesel\'y, CSc.\\ \\
        Katedra aplikované matematiky \\
         PřF MU Brno \\
%         Janáčkovo nám.~2a \\
%         662\,95 Brno\\
         {\tt vesely@math.muni.cz}}
\thanks{
Zpracováno v~rámci projektu
G0142 "Distanční a kombinovaná forma bakalářského a  magisterského studia
aplikovaných matematických disciplin na MU v~Brně".
}
\date{16. listopadu 2003}
\maketitle
%\begin{abstract}
%   Text abstraktu.
%\end{abstract}

% ===> ARTICLE BODY

\section{Úvod}                                          \label{sec:1}

Pod pojmem {\em Matematický výpočetní systém\/} (MVS) rozumíme obecně jakýkoliv
softwarový prostředek
využívající matematický aparát pro řešení problémů v~oblasti matematiky samotné
nebo i v~jiných oborech, které aplikace takového aparátu vyžadují.
Tyto systémy jsou zpravidla koncipovány jako zcela autonomní s~možností
práce v~interaktivním i dávkovém režimu.

Vzhledem k~šíři nabídky takových systémů se v~této úvodní části omezíme spíše na
výčet a základní charakteristiku nejznámějších nebo nejpoužívanějších z~nich.

Systémy lze rozčlenit do tří kategorií:
\begin{description}
  \item[Systémy počítačové algebry:] Mezi tři nejznámější patří:
    \begin{itemize}
      \item {\bf Maple} kanadské společnosti {\em MapleSoft\/}
            (\url{http://www.maplesoft.com}),\\
            v~České republice distribuovaný
            firmou {\em Czech Software First~s.r.o.\/}
      \item {\bf Mathematica} společnosti {\em Wolfram Research\/}
          (\url{http://www.wolfram.com}),\\
            v~České republice distribuovaný firmou {\em ELKAN s.r.o.\/}\\
          (\url{http://www.mathematica.cz}).
      \item {\bf MathCad} americké společnosti {\em Mathsoft\/}
          (\url{http://www.mathsoft.com}),\\
            v~České republice distribuovaný firmou
          {\em Software Factory s.r.o.\/}\\
          (\url{http://www.mathsoft.cz}).
% AXIOM jiz neni podporovan ani firmou NAG
%      \item {\bf Axiom} podporovaný v současnosti anglickou společností
%          {\em Numerical Algorithms Group\/}
%          (\url{http://www.nag.com/symbolic_software.asp}).
    \end{itemize}
    Jedná se o~systémy zaměřené na formální
    algebraické výpočty neboli symbolické manipulace s~algebraickými výrazy.
    Počítačovou algebru lze charakterizovat jako obor vědeckého počítání, který
    vyvíjí, analyzuje, implementuje a používá algebraické algoritmy.
    Provádění numerických výpočtů je samozřejmě rovněž možné, vesměs dokonce se
    zvolenou přesností, tj. na zvolený počet desetinných míst.
    Další podrobnější informace lze nalézt například na\\
    \url{http://www.math.muni.cz/~plch/difer/cela/node2.html},\\
    \url{http://www-troja.fjfi.cvut.cz/~liska/poalg/} nebo\\
    \url{http://www.can.nl/}.

  \item[Numerické výpočetní systémy:] Opět se omezíme jen na stručný výběr
  několika nejznámějších:
    \begin{itemize}
      \item {\bf MATLAB} americké společnosti {\em MathWorks\/}
         (\url{http://www.mathworks.com}),
          v~České republice distribuovaný firmou
         {\em Humusoft,~s~r.o.\/}\\
         (\url{http://www.humusoft.cz}).
      \item {\bf NAG} anglické společnosti {\em Numerical Algorithms Group\/}\\
         (\url{http://www.nag.com}).
      \item {\bf S-plus} americké společnosti {\em Insightful Corporation\/}
            (\url{http://www.insightful.com}),
            v~České republice distribuovaný firmou {\em TriloByte s.r.o.\/}\\
            (\url{http://www.trilobyte.cz/splus}).
      \item {\bf SPSS} americké společnosti {\em SPSS,~Inc.\/}
            (\url{http://www.spss.com}),
            v~České republice zastoupené firmou {\em SPSS CR s.r.o.\/}
          (\url{http://www.spss.cz}).
      \item {\bf Statistica} americké společnosti {\em StatSoft,~Inc.\/}
            (\url{http://www.statsoft.com}),
            v~České republice zastoupené firmou\\
            {\em StatSoft Czech Republic s.r.o.\/}
            (\url{http://www.statsoft.cz}).
      \item {\bf Statgraphics} americké společnosti
            {\em Statistical Graphics Corporation\/}\\
            (\url{http://www.sgcorp.com}).
      \item {\bf SAS} americké společnosti {\em SAS Institute,~ Inc.\/}
            (\url{http://www.sas.com/}),\\
            v~České republice zastoupené firmou
            {\em SAS Institute ČR, s.r.o.\/}\\
            (\url{http://www.sas.com/offices/europe/czech/sas}).
    \end{itemize}
    Jedná se o~systémy zaměřené na numerické výpočty v~pohyblivé řádové čárce.
    Na rozdíl od systémů počítačové algebry není obvykle možné volit počet
    desetinných míst přesnosti. Standardně jsou výpočty prováděny s~přesností
    na cca~15 desetinných míst, což odpovídá 64-bitové reprezentaci čísel
v~pohyblivé řádové čárce, neboli uložení každého reálného čísla spotřebuje
    8~bajtů vnitřní paměti (u~komplexních čísel dvojnásobek).
    Jak je zřejmé z~předchozího výčtu, je většina těchto systémů zaměřena na
    statistické výpočty a modelování.
    Pokud je záběr systému širší (MATLAB), pak statistické výpočty
    bývají podporovány volitelnými specializovanými knihovnami funkcí.
    Ucelený přehled komerčních i volně šířených systémů umožňujících (mimo
    jiné) provádění statistických výpočtů lze nalézt na
    \url{http://ourworld.compuserve.com/homepages/Rainer_Wuerlaender/statsoft.htm}.

  \item[Specializované systémy:] Typickým představitelem je
     \begin{itemize}
       \item {\bf PARI-GP} --- volně šířený systém specializovaný na výpočty v~teorii
         čísel.
         Podrobnější informace lze nalézt na \url{http://pari.math.u-bordeaux.fr/}.
     \end{itemize}

\end{description}

V~tomto kurzu se budeme nadále podrobněji zabývat pouze systémem MATLAB.
Důvodem pro tuto volbu je několik skutečností:
\begin{itemize}
  \item Ve standardní výbavě MATLAB nabízí velmi široké spektrum funkcí napříč
  nejrůznějšími oblastmi matematiky doplněný mnoha volitelnými speciálními
  knihovnami jak pro potřeby matematiky tak i jiných oborů.
  Namátkově lze zmínit například:
  statistické výpočty a modelování, optimalizace, splajny, wavelety,
  číslicové zpracování signálů a obrazů, dynamické systémy a řízení, fuzzy
  logika, finanční matematika a mnoho dalších.
  Je takto dokonce zpřístupněno i jádro systému MAPLE, takže MATLAB není
  uzavřen ani symbolickým manipulacím typickým pro systémy počítačové algebry.
  \item Intuitivní programovací jazyk se syntaxí blízkou matematickému stylu
     výrazně zvyšující produktivitu práce při vývoji numericky náročných
     algoritmů.
  \item Propracované algoritmy numericky kvalitně ošetřené,
     což vede k~celkové vysoké stabilitě systému i při řešení
     rozsáhlých výpočetně i paměťově náročných úloh.
  \item MATLAB se po letech vyvinul v~celosvětový standard v~oblasti analýzy,
     zpracování a modelování dat jak na
     akademických pracovištích tak i v~komerční sféře.
  \item Je vhodný jako podpůrný prostředek do výpočetních praktik k~mnoha dalším
     matematickým kurzům --- mimo jiné také proto, že algoritmy většiny funkcí
     jsou přístupné k~podrobnému studiu či dalším modifikacím.
  \item Kvalitní grafický subsystém pro snadnou vizuální prezentaci dat i
     výsledků zpracování.
  \item Existence celé řady obdobných avšak cenově dostupnějších systémů,
     nabízejících kompatibilitu svého jazyka s~jazykem MATLABu a nebo
     prostředky pro automatickou konverzi programů mezi oběma jazyky.
     Jako typické představitele lze uvést tyto systémy:
    \begin{itemize}
      \item {\bf O-matrix}, komerční systém, avšak podstatně levnější než
         MATLAB\\
        (\url{http://www.omatrix.com}).
      \item {\bf Octave}, volně šířený systém dostupný i pod Linuxem\\
            (\url{http://www.octave.org}).
      \item {\bf Scilab}, volně šířený systém dostupný i pod Linuxem\\
            (\url{http://www-rocq.inria.fr/scilab}).
    \end{itemize}

Naším cílem však nebude a ani nemůže být vyčerpávající
popis všech funkcí a možností systému MATLAB.
K~tomu jsou určeny firemní manuály (dostupné i v~elektronické podobě) a řada
dalších specializovaných publikací (viz kapitolu \ref{sec:2}).

V~následujících kapitolách tohoto textu se proto zaměříme spíše na výklad základní
filozofie a principů, na nichž systém pracuje.
Po jejich prostudování pak posluchač může přistoupit
k~získání základních praktických dovedností, které mu umožní využít
poznatky získané v~jiných matematických předmětech k~efektivnímu a tvůrčímu řešení
reálných úloh a problémů.

Pro tento účel byla zvolena netradiční metoda interaktivního tutoriálu.
Posluchač si jej spustí jako samostatnou aplikaci přímo po systémem MATLAB.
(viz přílohu~\ref{sec:tutorial}).
Aplikace jej postupně v~11 lekcích provádí jednotlivými tétmatickými okruhy.
Každá lekce systematicky vysvětluje a na živých ukázkách přímo
ilustruje syntaxi a funkci probíraných příkazů.
V~interaktivním režimu {\tt keyboard} má student možnost si sám prakticky
vyzkoušet předtím ilustrované příkazy.

V~příloze~\ref{sec:priklady} lze ke každé lekci nalézt zadání praktických úloh
k~vyřešení.
Jejich vypracováním si student dále fixuje získané poznatky a učí se MATLAB
tvůrčím způsobem využívat.

\end{itemize}



\newpage
\section{Charakteristika systému MATLAB}                \label{sec:2}

\subsection{Základní fakta}                             \label{ssec:2.1}

Název systému je odvozen z~angličtiny: MATLAB=MATrix LABoratory.
Systém produkuje americká společnost {\em MathWorks,~Inc.\/}
(\url{http://www.mathworks.com}) a jejím výhradním
distributorem pro Českou republiku je pražská firma {\em Humusoft,~s.r.o.\/}
(\url{http://www.humusoft.cz}).
Systém MATLAB představuje maticově orientované výpočetní prostředí s~vlastním
programovacím jazykem vhodným pro efektivní implementaci, provádění a
vizualizaci numerických výpočtů vyžadujících náročný aparát z~nejrůznějších
oblastí matematiky.
Je dostupný na všech běžných platformách (WINDOWS, LINUX, UNIX, atd.) při
zachování takřka stoprocentní přenositelnosti vytvořených programů a datových
souborů.

\subsection{Programovací jazyk}                             \label{ssec:2.2}

\begin{itemize}
  \item Programovací jazyk vyšší generace umožňuje automatické deklarování a
  přetypování používaných proměnných.
  Podporované datové typy jsou tyto:
  \begin{description}
    \item[Základním datovým typem] je {\em matice\/} nebo obecnější
     {\em vícerozměrné pole \linebreak
     (\mbox{N-D array})\/}, jehož prvky mohou být jakékoliv reálné
     nebo komplexní skalární veličiny.
    \item[Odvozené datové typy] jsou {\em buněčná pole (cell arrays)\/} svojí
     strukturou podobné základnímu datovému typu s~tím rozdílem, že za prvky
     mohou mít proměnné libovolného typu (tedy nejen skalární veličiny), dále
     {\em struktury\/} a {\em objekty\/} s~položkami libovolného přípustného typu
     umožňující využívat techniky strukturovaného a objektového programování běžné
     v~klasických programovacích jazycích jakým je například C++.
  \end{description}

  \item Na rozdíl od {\em skalárního programování\/} známého z~klasických
  programovacích jazyků jako FORTRAN, PASCAL nebo C++ je pro MATLAB typické
  {\em vektorově-maticové programování\/}, neboť základními proměnnými jsou právě
  vektory a matice.
  Syntaxe jazyka je pak blízká matematickým zápisům používaným v~lineární
  algebře, což usnadňuje přepis i komplikovaných matematických výrazů při
  zachování srozumitelnosti.
  Efektivní využívání všech konstrukcí jazyka tak vyžaduje opustit zaběhaný
  {\em skalární\/} přístup, neboli již ve fázi návrhu algoritmu je třeba provést
  tzv.~{\em vektorizaci\/} řešeného problému, tj. již při jeho formulaci je třeba
  se snažit v~maximálně možné míře využít formalizmu maticové algebry.
  Vynaložená námaha se vrátí v~přehlednosti, spolehlivosti a rychlosti
  výsledného kódu.
\end{itemize}

\subsection{M-soubory}                    \label{ssec:2.3}

Základními programovými jednotkami jsou buď dávkové (skripty) nebo funkční
procedury zapsané v~jazyce MATLABu.
Jsou to soubory s~příponou {\tt .m}, neboli tzv. {\tt M}{\bf-soubory}, které
lze připravit jako otevřený text libovolným textovým editorem.
Systém MATLAB má pro tento účel vlastní editor, který je součástí instalace
a nabízí další specifické funkce. Spustí se příkazem {\tt edit}.
Mimo jiné automaticky barevně rozlišuje klíčová slova jazyka MATLAB a
upozorňuje tak na možné překlepy již ve fázi psaní programu,
v~režimu ladění (debugging) pak nabízí prostředky pro krokování běžícího programu
a sledovaní mezivýsledků v~lokálních proměnných.

\begin{itemize}
  \item
    Program uložený v~dávkovém M-souboru se spustí v~příkazovém okně MATLABu
    jednoduše zadáním povelu, jehož jméno je totožné se základním jménem
    M-souboru (bez přípony .m).
    Všechny proměnné použité programem jsou sdíleny s~příkazovým oknem a tedy
    jsou z~něj interaktivně přístupné.
  \item
    Programy funkčního M-souboru vyžadují speciální deklaraci vstupních a
    výstupních parametrů v~jeho záhlaví. Funkční program se opět spouští obdobně
    jako u~dávek s~tím rozdílem, že povel je doplněn o~seznamy skutečně
    přenášených vstupních a výstupních proměnných, jejichž hodnoty korespondují
    v~daném pořadí s~příslušnými vstupními a výstupními parametry.
    Ostatní proměnné používané funkční procedurou mají lokální charakter a
    nejsou tedy běžně přístupné v~příkazovém okně.
    U~tzv.~ {\em globálních\/} proměnných speciálně takto deklarovaných toto
    omezení neplatí.
  \item
    MATLAB je rychlý interpret. Programy v~M-souborech není tedy třeba předem
    kompilovat. Jsou přímo prováděny (interpretovány) po spuštění ve
    tvaru připraveném editorem.
    Interpretace je velmi efektivní, neboť zahrnuje skrytou automatickou
    předkompilaci, která se provádí jen jednou při prvním spuštění.
    Opakovaná spouštění pak užívají předkompilovaný kód uložený ve vnitřní paměti
    a běží proto výrazně rychleji.
    Tento předkompilovaný kód lze z~paměti odstranit pomocí příkazu
    {\tt clear}.
    Užívá se v~případech, kdy potřebujeme modifikovat dříve spuštěný M-soubor
    uložený mimo aktuální adresář.
\end{itemize}

\subsection{Vestavěné příkazy a MEX-soubory}            \label{ssec:2.4}

Většina příkazů jazyka MATLAB je realizována pomocí M-souborů.
Použité algoritmy jsou tak otevřeny ke studiu i modifikaci uživatelem.
Výjimkou jsou jen některé {\em vestavěné (built-in)\/} příkazy jádra systému,
které jsou jeho plně kompilovanou součástí s~cílem maximalizovat výkon celého
systému nebo některých jeho funkcí vyžadujících vysokou výpočetní rychlost.

Uživatel MATLABu může užít externí kompilátor jazyka C nebo FORTRAN
k~tvorbě vlastních programových modulů, které skýtají obdobné možnosti jako
vestavěné příkazy.
Představují tak alternativu k~M-souborům v~případech
náročných na výpočetní rychlost.
Takto vytvořené binární soubory se nazývají {\tt MEX-soubory}.
Pod operačním systémem Windows tuto roli přebírají soubory s~příponou
{\tt .dll} (Dynamically Linked Library).
MEX-soubor vytvořený pod jednou platformou (operačním systémem) není ale přímo
přenositelný. Na jiné platformě je tak třeba příslušný modul znovu zkompilovat.

Systém nabízí i možnost využít MATLAB jako výpočetní
stroj pro samostatný a souběžně spuštěný program zkompilovaný z~jazyka
C nebo FORTRAN.
Takový program může prostřednictvím speciálního rozhraní využívat libovolné
funkce MATLABu.

\subsection{Specializované knihovny funkcí}             \label{ssec:2.5}

Tématicky zaměřené knihovny M-souborů (a případně i MEX-souborů) soustředěné
v~jednom adresáři jsou v~terminologii MATLABu nazývány {\em toolboxy\/}.
V~současné době existuje široká nabídka nejrůznějších specializovaných toolboxů
ať již volně ke stažení na internetu nebo komerčních
(firemních od {\em MathWorks\/} nebo od jiných subjektů).
Systémové firemní toolboxy jsou integrální součástí základního systému.
Pro větší přehlednost třídí dostupné funkce do příbuzných tematických skupin.
Zvláštní pozornost zaslouží následující tři volitelné firemní toolboxy:
\begin{itemize}
  \item {\em Symbolický toolbox (Extended Symbolic Math Toolbox)\/}, který
    poskytuje rozhraní k~jádru známého systému MAPLE zmíněnému již v~kapitole
    \ref{sec:1}.
    Jádro systému MAPLE je přímo integrální součástí toolboxu a neinstaluje se
    tedy odděleně od MATLABu.
    MAPLE je na rozdíl od MATLABu orientován na symbolické výpočty a výpočty
s~vysokou přesností. Naopak silnou stránkou  MATLABu je široká nabídka
    numericky stabilních výpočetních algoritmů z~nejrůznějších oblastí.
    Symbolický toolbox propojuje obě prostředí a umožňuje využít předností
    každého z~nich. Navíc symbolické výrazy mohou vystupovat přímo jako prvky
v~maticích, mohou být manipulovány při symbolicky prováděných maticových
    operacích a nakonec jednoduše numericky vyhodnoceny po dosazení konkrétních
    hodnot za symbolické proměnné.
  \item {\em Statistický toolbox\/} nabízející základní funkce potřebné při
    modelování a výpočtech ve statistice. Namátkou vyjmenujme některé z~nich.
    Pro většinu běžných rozložení jsou k~dispozici funkce pro výpočet hustoty,
    distribuční funkce a funkce k~ní inverzní (výpočet kvantilů), odhad
    parametrů rozdělení z~histogramu,
    generátory pseudonáhodných čísel, funkce popisné statistiky, lineární
    a nelineární modely a mnoho dalších.
  \item {\em Optimalizační toolbox\/} zahrnující běžné techniky lineárního i
    nelineárního programování.
\end{itemize}

\subsection{Grafický subsystém}                         \label{ssec:2.6}

Výborně navržený grafický subsystém nabízí funkce z~těchto dvou hlavních
oblastí:
\begin{itemize}
  \item
    Funkce pro kreslení 2-D i 3-D grafů a
    řadu dalších nástrojů pro názornou vizualizaci dat.
    Vyznačuje se vysokou flexibilitou (vlastnosti grafických objektů lze měnit
    nastavováním velkého množství řídících parametrů) při zachování jednoduchosti a
    intuitivnosti ovládání (většina parametrů má nastaveny implicitní hodnoty).
  \item
    Nástroje pro interaktivní návrh uživatelského rozhraní (GUI=Graphical User Interface)
    umožňují vytvářet pro koncové uživatele aplikace ovládané pomocí menu a
    dalších běžných grafických ovládacích prvků
    (tlačítka, seznamy, zatrhávací položky aj.).
    Spouští se příkazem {\tt guide}.
    Tvůrce aplikace se tak může vyhnout příkazovému režimu, který bývá pro většinu
    koncových uživatelů nevhodný.
\end{itemize}

\subsection{Kompilace z~MATLABu do jazyka C}       \label{ssec:2.7}

Kompilátor MATLAB $\longrightarrow$ C je nadstandardní výbava systému
umožňující automatický převod programů zapsaných v~jazyce MATLABu do jazyka C.
Po převodu je možno takto získaný zdrojový C kód samostatně přeložit vhodným
kompilátorem jazyka C a sestavit pomocí knihoven MATLABu dodaných speciálně
pro tento účel.
Obdržíme tak aplikaci (obvykle spustitelný soubor .EXE), který pak lze užívat
či dále distribuovat ke koncovým uživatelům zcela nezávisle na prostředí
systému MATLAB.
Pořízení kompilátoru je dosti nákladné a vyplatí se
proto pouze větším softwarovým firmám, kterým umožní výrazně redukovat
náklady na vývoj jejich vlastních aplikací.
Přímý vývoj a testování takových aplikací v~jazyce C totiž vyžaduje
několikanásobně větší nároky na čas a lidské zdroje, než v~prostředí MATLABu.

\subsection{Spuštění a ukončení MATLABu}                \label{ssec:2.8}


MATLAB spustíme pod operačním systémem provedením příkazu {\tt matlab.exe},
který se nachází v~podadresáři {\tt bin} kořenového adresáře
instalovaného MATLABu.
Pod operačním systémem WINDOWS je spuštění možné též prostřednictvím nabídky
START a nebo kliknutím na vytvořeného zástupce MATLABu na pracovní ploše.
Po spuštění se objeví {\em příkazové okno\/}, v~němž symbol \ {\small >>}\ \
(angl.~{\em prompt\/}) signalizuje připravenost systému přijímat příkazy.

\noindent
Práci MATLABu ukončíme příkazem {\tt exit} nebo {\tt quit}.

\subsection{Online nápověda, manuály a učebnice}        \label{ssec:2.9}

Online nápověda je nápomocná uživateli přímo během práce v~příkazovém okně.
Nápověda pracuje strukturovaně v~několika úrovních podrobností:
\begin{itemize}
  \item příkaz {\tt help} zobrazí seznam tématických okruhů (toolboxů).

  \item příkaz {\tt help jméno\_toolboxu} vypíše seznam funkcí zvoleného
        tématického okruhu (toolboxu).

  \item příkaz {\tt help jméno\_funkce} nebo {\tt help operátor} dá podrobnou
        nápovědu k~danému konkrétnímu příkazu, resp. operátoru; zejména
        {\tt help help} vypíše nápovědu k~samotnému příkazu {\tt help}.
  \item příkaz {\tt doc} zobrazí pomocí rezidentního internetového prohlížeče
        (zpravidla {\em Netscape\/} nebo
        {\em Internet Explorer\/}) samostatné okno tzv. {\em HelpDesk\/}.
        Toto okno představuje nejpodrobnější zdroj informací o~systému MATLAB i
        všech nainstalovaných toolboxech.
        Lze v~něm dokonce nalézt všechny tištěné manuály v~elektronické podobě
        jako soubory s~příponou .PDF pro rozšířený prohlížeč {\em Acrobat Reader\/}.
        Jsou zde také přímé odkazy na domovskou stránku firmy {\em
        MathWorks\/}, kde lze nalézt například informace o~dalších nabízených
        produktech a učebnicích (viz odkaz
        \url{http://www.mathworks.com/support/books/}).
\end{itemize}

Pro samostatné studium lze samozřejmě využít i originální anglicky psané manuály
v~tištěné podobě vztahující se jak k~základnímu systému
(viz např. \cite{The92a,The92b}) tak i k~jednotlivým toolboxům, případně
některou z~učebnic nebo příruček vydávaných jinými autory v~nejrůznějších
světových nakladatelstvích.

Publikací tohoto druhu jsou i česky psaná skripta vydaná na
Masarykově univerzitě v Brně \cite{Svo01} a
na Západočeské univerzitě v Plzni \cite{Her94,Her95}.


\newpage
\appendix
\section{Interaktivní průvodce systémem MATLAB}         \label{sec:tutorial}

V~příkazovém okně MATLABu nejprve zkontrolujeme, zda adresář {\tt MATLABtutorial}
je nastaven jako aktuální. Pokud tomu tak není, provedeme nastavení příkazem
{\tt cd}. Alternativně lze pro tento účel zvolit v menu {\em File\/} příkazového
okna MATLABu položku {\em Set Path\/} a pak tlačítkem {\em Browse\/} aktivovat
adresář {\tt MATLABtutorial}.
Poté již můžeme průvodce spustit zadáním povelu {\tt tutorial}.
Objeví se hlavní nabídka jako na obrázku \ref{fig:tut1} s~těmito ovládacími
prvky:
\begin{description}
  \item[Seznam témat:] Zvolíme požadovaný tématický okruh z~nabídky jedenácti
    lekcí.
  \item[Obsah tématu:] Udává stručný obsah zvoleného tématu.
  \item[Subtémata:] Vybereme dílčí téma, případně dvojklikem je rovnou
    aktivujeme stejně jako při stisku tlačítka "Spustit".
  \item[Tlačítko "Konec":] Ukončí činnost průvodce.
  \item[Tlačítko "Nápověda":] Stručný popis ovládání hlavní nabídky.
  \item[Tlačítko "Spustit":] Vyvolá druhé nabídkové okno jako na obrázku
    \ref{fig:tut2} umožňující ovládat výběr demonstračních příkladů pro zvolené
    subtéma.
\end{description}

\medskip
\noindent
Nabídkové okno pro volbu demonstračních příkladů má následující ovládací prvky:
\begin{description}
  \item[Záhlaví zleva doprava:] Vybraný tématický okruh (lekce), vybrané
    subtéma a pořadové číslo jeho části.
  \item[Okno pod záhlavím:] Obsahuje stručný vysvětlující popis jednoho nebo
    více příkazů zvolené části subtématu.
  \item[Tlačítko "Příklad":] V~příkazovém okně MATLABu spustí demonstrační
    příklad pro zvolenou část subtématu.
    Demonstrace probíhá postupně tak, aby bylo možno sledovat provádění
    automaticky prováděných příkazů.
    V~režimu {\tt pause} zajistíme pokračování stiskem libovolné klávesy.
    V~interaktivním režimu {\tt keyboard} je po {K\small >> } možno zadávat
    jakékoliv příkazy a vyzkoušet si tak probírané povely podle vlastního uvážení.
    Po zadání příkazu {\tt return} je interaktivní režim ukončen a demonstrační
    příklad pokračuje. Takto postupujeme až do ohlášení konce příkladu.
    Příklad je nutno v každém případě projet až do konce. Pak je možno jej
    spustit buď znovu a nebo přejít na další subtéma.
  \item[Tlačítko "Dále":] Vybere v~pořadí další část subtématu.
  \item[Tlačítko "Nápověda":] Stručný popis ovládání nabídky demonstračních příkladů.
  \item[Tlačítko "Konec":] Zavře okno pro volbu demonstračních příkladů.
  \item[Tlačítko "Zobraz":] V rezidentním internetovém prohlížeči zobrazí firemní
  online nápovědu k~příkazu zadanému do editačního pole napravo.
\end{description}


% Put the following \input to the preamble
% \usepackage{graphicx}

\begin{figure}
\begin{center}
  \leavevmode
     \fbox {
      \includegraphics[width=0.9\textwidth]{tutorial1.eps}
           }\\
   \caption          % optional
   {Hlavní nabídkové okno} \label{fig:tut1}
\end{center}
\end{figure}

\begin{figure}
\begin{center}
  \leavevmode
     \fbox {
      \includegraphics[width=0.9\textwidth]{tutorial2.eps}
           }\\
   \caption          % optional
   {Nabídkové okno pro volbu demonstračních ukázek} \label{fig:tut2}
\end{center}
\end{figure}
\newpage

\section{Praktické úlohy k~řešení v~MATLABu}  \label{sec:priklady}

Ke každé lekci následuje seznam praktických úloh. Po zvládnutí příslušné lekce
za pomoci interaktivního průvodce se doporučuje
vypracovat příslušné úlohy k~této lekci a dále si tak upevnit získané poznatky.
Student si takto postupně tvůrčím způsobem
osvojuje používání MATLABu jako účinného a efektivního nástroje k~řešení
nejrůznějších problémů vyžadujících matematický aparát.

\begin{description}
  \item[Lekce 1:]
       syntaxe jazyka, ovládání příkazového okna, práce se soubory a
       operačním systémem, nápověda a kontextové vyhledávání,
       seznam připojených knihoven (tzv. MATLABPATH).
    \begin{enumerate}
      \item Nastavte adresář \verb|MATLABtutorial| jako aktuální a vytvořte v~něm
            podadresář \verb|MATLABcviceni|, který pak nastavte také jako aktuální.
            V~něm budete nadále řešit úlohy z~této a dalších lekcí.

      \item Zajistěte vytvoření záznamu řešení následujících úloh tohoto cvičení.

      \item Nalezněte jméno funkce, která počítá stopu matice (angl. {\em trace\/}).

      \item Zjistěte, v~kterém adresáři (knihovně) je uložena.

      \item Vypište nápovědu a tělo této funkce. Porovnáním obou výpisů
            vydedukujte, jak se realizuje nápověda v~m-souborech.

      \item Zkopírujte pod týmž jménem tuto funkci do sveho aktuálního adresáře
            a pomocí editoru v~ní nápovědu počeštěte.

      \item Zopakujte postup z~kroků 3 až 5 --- co jste zjistili?

      \item Vypište všechny m-soubory ve Vašem aktuálním adresáři.

      \item Připojte na konec MATLABPATH Vaši knihovnu \verb|MATLABcviceni|.

      \item Odstraňte tuto knihovnu pomocí příkazu \verb|rmpath|.

      \item Uložte stávající MATLABPATH do proměnné \verb|p|.

      \item Znovu knihovnu \verb|MATLABcviceni| přidejte, ale tentokrát na začátek
            MATLABPATH.

      \item Obnovte stav z~kroku 11 s~využitím proměnné \verb|p|.

      \item Ukončete záznam řešení zahájený v~kroku 2.
    \end{enumerate}

  \item[Lekce 2:]
       prázdná matice, přímé vytváření matic výčtem prvků,
       generování matic se specifickou strukturou,
       získání informací o~dosud alokovaných maticích,
       údržba matic.
   \begin{enumerate}
     \item Vytvořte náhodnou matici \verb|A| rozměru $10 \times 8$, jejíž všechny
           prvky jsou celá čísla v~intervalu $[-50,40]$.

     \item Do \verb|B| uložte submatici z~\verb|A| tvořenou jejími řádky na sudých
           a sloupci na lichých pozicích.

     \item Na tytéž pozice uložte v~původní matici \verb|A| samé nuly.

     \item Zjistěte velikost matice \verb|B|, resp. jen počet jejích řádků a
           sloupců.

     \item Co se stane, když provedete přiřazení \verb|A(1,9)=1|?

     \item Uložte matici \verb|B| do souboru v~binárním tvaru a pak ji vymažte
           z~paměti (zkontrolujte vypsáním obsahu paměti).

     \item Načtěte uloženou matici zpět a opět proveďte kontrolní výpis.

     \item Zopakujte kroky 6 a 7 s~tím rozdílem, že matici uložíte jako
           textovou, obsah tohoto souboru vypište.

     \item Vypočtěte délku druhého řádku matice \verb|A|.

     \item Utvořte matici $8 \times 8$, která bude mít na hlavní diagonále
           tytéž prvky jako zde má matice \verb|A|, jinak ale samé nuly.

     \item Nalezněte ekvidistantní dělení intervalu $[-2,10]$ s~krokem $0,5$.
   \end{enumerate}

  \item[Lekce 3:]
       techniky indexování a práce se submaticemi, submatice na levé straně
       přiřazovacího příkazu, změna rozměru matice.
   \begin{enumerate}
     \item Vygenerujte sloupcový vektor $\vec{u}=\VEC{-5,-3,-1,\dots}$ délky $20$.

     \item Doplňte $\vec{u}$ na vektor $\vec{v}=\VEC{-5,-4,-3,-2,-1,0,\dots}$
           délky $40$ tvořící souvislou posloupnost.

     \item Utvořte z~vektoru $\vec{v}$ matici \mx{V} rozměru $5 \times 8$, v~níž
           prvky vektoru $\vec{v}$ budou uloženy po sloupcích.

     \item Odstraňte 7. sloupec matice $\mx{V}$.

     \item Pomoci $\mx{V}$ vytvořte matici $\mx{A}$, jež obsahuje řádky matice
           $\mx{V}$ v~obráceném pořadí.

     \item Zjistěte počet prvků matice $\mx{A}$ a uložte jej do proměnné $n$.

     \item Na náhodně vybraných $(n-1)/2$ pozic v~matici $\mx{A}$ uložte hodnotu
           kladného nekonečna, ostatní prvky ponechte beze změny.

     \item Kladná nekonečna v~matici $\mx{A}$ nahraďte zápornými nekonečny.
   \end{enumerate}

  \item[Lekce 4:]
       základní maticové operace,
       speciální maticové operace (operace po složkách, levé a pravé dělení,
       umocňování, Kroneckerův součin aj.).
   \begin{enumerate}
     \item Vygenerujte nahodně matice $\mx{A},\mx{B}$ téhož rozměru $3 \times 5$,
           jejichž prvky jsou komplexní čísla s~celočíselnou reálnou i imaginární
           částí v~intervalu -5 až 5.

     \item Vytvořte z~$\mx{B}$ transponovanou matici $\mx{C}$ a
           hermitovsky sdruženou matici $\mx{D}$.

     \item Prověřte, zda submatice vytvořená z~prvých tří řádků a sloupců v~$\mx{B}$
           je unitární.

     \item Na maticích $\mx{A},\mx{B},\mx{C}$ vyzkoušejte všechny binární operace,
           které znáte.

     \item Spočtěte matici $\mx{E}$ jako součin submatic tvořených prvými
           třemi sloupci matice  $\mx{A}$ a prvými třemi řádky matice $\mx{C}$.
           Výpočtem ověřte, že determinant součinu $\mx{E}$ je součinem determinantů
           výše popsaných submatic.

     \item Spočtěte determinant a stopu matice $\mx{E}$ pomocí jejích vlastních
           čísel.

     \item Sestavte složený příkaz, který za poslední řádek matice $\mx{A}$ doplní
           lineární kombinaci jejích řádků, kde každý řádek je vždy násoben
           svým řádkovým indexem.

     \item Najděte vektor $\vec{v}$, který je ortogonální projekcí prvého sloupce
           matice $\mx{B}$ na prvý sloupec matice $\mx{A}$.

     \item Doplňte ortogonální vektory získané v~předešlém kroku na ortogonální
           bázi v~trojrozměrném vektorovém prostoru nad tělesem komplexních čísel.

     \item Vytvořte z~$\mx{A}$ matici, kde na místě každého prvku bude submatice
           $3 \times 2$ s~tímto prvkem na každé pozici.

   \end{enumerate}
  \item[Lekce 5:]
       relační a logické maticové operátory, smíšené aritmeticko-logické
       výrazy, logické funkce, hledání v~maticích.
   \begin{enumerate}
     \item Vygenerujte náhodně reálné celočíselné matice $\mx{A}, \mx{B}$ rozměru
           $3 \times 4$ s~prvky v~intervalu -5 až 5.

     \item Vytvořte textovou matici \verb|T| téhož rozměru, kde znak plus(+), resp.
           \mbox{minus(-)} na $(i,j)$\dash té pozici indikuje, ze $A(i,j)$ a $B(i,j)$ jsou
           nenulová čísla téhož, resp. různého znaménka; je\dash li některý
           z~prvků $A(i,j)$ nebo $B(i,j)$ nulový uložíme znak tečky(.).

     \item Jedním složeným příkazem zjistěte, zda součet záporných prvků
           v~\mx{A} je v~absolutní hodnotě menší než součet kladných prvků v~\mx{B}.

     \item Zjistěte celkový počet nulových prvků v~maticích \mx{A} a \mx{B}
           dohromady.

     \item Vytvořte matici $\mx{C}$ stejného rozměru jako \mx{A}, která ma na
           $(i,j)$\dash té pozici rozdíl řádkového a sloupcového indexu.
           Pomocí této matice
           rozložte matici \mx{A} na její diagonálovou, dolní trojúhelníkovou a
           horní trojúhelníkovou část.

     \item Zjistěte, zda v~\mx{A} existuje nulový prvek.

     \item Zjistěte odmocniny vlastních čísel matice $\mx{A}\mx{A}^T$ a
           porovnejte výsledek s~výstupem příkazu \verb|svd(A)| --- viz též
           \verb|help svd|.

     \item Nalezněte řádkové a sloupcové pozice kladných prvků v~\mx{A}.

     \item Zopakujte příklad 8 s~maticí \mx{B}, kde využijete jednorozměrného
           indexovaní a všechny kladné prvky přepíšete jejich desetinásobkem.

     \item Zkontrolujte existenci proměnné \verb|A| před a po vymazáni matice
           \mx{A} z~paměti.
   \end{enumerate}
  \item[Lekce 6:]
       práce s~textovými řetězci, znakové konverze čísel,
       vyhodnocení příkazu zadaného textovým řetězcem,
       zpracování chybových hlášení,
       operace s~datumem a časem.
   \begin{enumerate}
     \item Zajistěte, abyste na konci tohoto cvičení mohli zjistit Váš celkový čas
           spotřebovaný na řešení a porovnat jej s~čistým časem procesoru.

     \item Uložte následující dvě věty do matice \verb|T| na samostatné řádky:
           {\em Hlavní náplní třídenního pobytu byly diskuse.
           Účastnilo se ho 110 středoškoláků.\/}

     \item Věty z~\verb|T| uložte bez koncových mezer do řádkových vektorů
           \verb|v1| a \verb|v2|.

     \item Zjistěte počet mezer, písmen a číslic ve \verb|v1| a \verb|v2|.

     \item Spojte věty \verb|v1| a \verb|v2| za sebe do jednoho řádkového vektoru
           \verb|t| tak, aby za tečkou prvé věty následovala mezera.

     \item V~celém textu \verb|t| vyhledejte výskyt slabiky {\em la\/}.

     \item V~\verb|t| přidejte za slova {\em byly\/} a {\em ho\/} dvě mezery.

     \item Najděte pozice prvého písmena každého slova.\\
           (Návod: porovnejte \verb|t| s~řetězcem \verb|t| posunutým o~1 pozici
           vpravo)

     \item Počáteční písmena slov nalezená v~předchozím příkladu nahraďte
           velkými písmeny.

     \item Jednotlivá slova v~\verb|t| uložte postupně do proměnných
           \verb|slovo1|, \verb|slovo2|, atd.

     \item Vypište datum a čas, kdy jste cvičení řešili, kolik minut Vám
           to trvalo a jaký čas byl spotřebován procesorem.
   \end{enumerate}

  \item[Lekce 7:]
       funkční a dávkové m-soubory, větvení běhu programu,
       cykly v~programu.
   \begin{enumerate}
     \item[\ ] Podle následujících pokynů vytvořte funkční m-soubor \verb|cramer.m|.
           pro řešení systému lineárních rovnic $\mx{A}\vec{x}=\vec{b}$
           Cramerovým pravidlem:
     \item[1.] V~samostatném okně spusťte editor se souborem \verb|cramer.m|.\\
               Jako vzorovou kostru procedury lze použít soubor \verb|matsem7f.m|
               z~adresáře \verb|MATLABtutorial|.

     \item[2.] Vytvořte úvodní deklaraci a nápovědu pro tři vstupní parametry
           \verb|A,b,e| a tři vstupní parametry \verb|x,e1,e2| s~následujicím
           významem:\\
           \begin{tabular}{lcp{110mm}}
           \verb|A| & \dots & čtvercová matice soustavy rozměru $n \times n$
                              (povinný parametr)\\
           \verb|b| & \dots & matice $m$ pravých stran rozměru $n \times m$\\
                    &       & (nepovinný parametr při výpočtu inverze matice
                              \verb|A|)\\
           \verb|e| & \dots & tolerance (malé číslo) pro detekci skoro singulární
                              matice\\
                    &       & (nepovinný parametr, implicitní hodnota \verb|10*eps|)\\
           \verb|x| & \dots & matice rozměru $n \times m$, jejíž sloupce po řadě
                              odpovídají řešením soustav \verb|A*x(:,j)=b(:,j)|,
                              $j=1,...,m$\\
           \verb|e1|& \dots & maximální odchylka (v~absolutní hodnotě) od řešení
                              spočteného pomocí násobení zleva inverzní maticí \\
           \verb|e2|& \dots & maximální odchylka (v~absolutní hodnotě) od řešení
                              spočteného pomocí operátoru levého dělení
           \end{tabular}
     \item[3.] Popis činnosti funkce:
       \begin{itemize}
          \item[a)] Program zpracujte tak, aby zadání prázdné matice za nepovinný
                parametr mělo stejný efekt, jako jeho vynechání.
          \item[b)] Pokud byla zadána pravá strana, pak \verb|x| je řešení
                maticové rovnice \verb|A*x=b|.
          \item[c)] Pokud nebyla zadána pravá strana, pak \verb|x| je matice
                    inverzní k~\verb|A|.
          \item[d)] Odchylky \verb|e1|, resp. \verb|e2| počítejte jen, když tyto
                    parametry byly při volání funkce skutečně požadovány.
       \end{itemize}
     \item[4.] Zastavte program s~výpisem chybových hlášení v~těchto případech:
       \begin{itemize}
          \item[a)] Počet vstupních parametrů je menší než počet povinných
                    parametrů nebo větší než počet deklarovaných parametrů.
          \item[b)] Matice \verb|A| není čtvercová nebo je prázdná.
          \item[c)] Matice \verb|b| nemá stejný počet řádků jako \verb|A|.
          \item[d)] Matice \verb|A| je skoro singulární, tj. její determinant
                    je v~absolutní hodnotě menší než tolerance \verb|e|.
       \end{itemize}
     \item[5.] Program řádně otestujte pro všechny kombinace vstupních
           a vystupních parametrů:
       \begin{itemize}
          \item[a)] V~případě spolehlivě regulární matice \verb|A|
                   (například ortogonální),
                   by odchylky \verb|e1| a \verb|e2|  měly být zanedbatelné.
          \item[b)] V~případě skoro singulární matice: tu konstruujte pomocí
                   regulární matice ad a) ortogonalizací (příkaz \verb|orth|)
                   následovanou postupným nahrazováním některého sloupce
                   jeho stále se zmenšujícím skalárním násobkem zvětšeným
                   o~nějakou lineární kombinaci ostatních k~němu kolmých $n-1$
                   sloupců.
                   Dostanete tak posloupnost matic blížících se k~singulární
                   matici, na níž můžete monitorovat chování chyb \verb|e1| a
                   \verb|e2| a detekci singulárnosti při různých tolerancích
                   \verb|e|.
       \end{itemize}
   \end{enumerate}

  \item[Lekce 8:]
       interakce se spuštěným programem, řízení výpisů na obrazovku,
       prostředky pro ladění správné funkce programů.

       Na funkční proceduře \verb|cramer| zpracované v~předchozím cvičení
       vyzkoušejte různé způsoby ladění.

  \item[Lekce 9:]
       grafický subsystém, základy kreslení dvourozměrných a trojrozměrných
       grafů.
   \begin{enumerate}
     \item Nakreslete na intervalu $[0,4\pi]$ graf funkce $tsin(at)$
           pro hodnotu parametru $a=1$.

     \item Graf vhodně otitulkujte a popište osy.

     \item Zmeňte u~grafu dodatečně rozsah os, barvu, typ a tloušťku čáry.

     \item Nakreslete jedním příkazem do tychž os $m$ grafu téže funkce
           pro hodnoty parametru $a=1,\dots,m$ při předem zadaném $m=4$.

     \item Totéž, ale s~postupným přikreslováním grafu do téhož okna.

     \item Totéž, ale do 6\dash ti samostatných obrázků ve dvou řadách po třech.

     \item Nakreslete $3$ periody cykloidy s~poloměrem kružnice $r=2$;\\
           Cykloida je křivka zadaná parametricky:\\
           $x(t)=r(t-\sin(t)), y(t)=r(1-\cos(t))$.
     \item Obrázek s~cykloidou pojmenujte {\em Cykloida\/} namísto implicitního
           jména \linebreak
           {\em Figure No.\/}

     \item Vykreslete na intervalu $[-5,5]$ graf tzv. Dirichletovy funkce:\\
           $y(x)=\sin(a\pi x)/(a\sin(\pi x))$ pro hodnotu parametru $a=5$;\\
           pro vykresleni užijte ekvidistantní 101\dash bodovou síť.

     \item Graf se Vám asi moc nelíbí. Důvodem je, že $y(x)$ je periodická
           funkce s~periodou $1$, přičemž pro celočíselné hodnoty $x$ dostáváme
           výrazy typu $0/0$. L'Hospitalovým pravidlem spočtěte správné hodnoty
           a graf opravte.

     \item Do samostatných obrázků vykreslete grafy níže uvedených funkcí
           $z=f(x,y)$, přičemž pro každou použijte jinou metodu pro vykreslení:
       \begin{itemize}
     \item[a)] $f(x,y):=\abs{x-y}$ pro $x,y$ z~oblasti $[-5,5] \times [-6,6]$.
     \item[b)] $f(x,y):=1/(1+(x+y)^2)$ pro $x,y$ z~oblasti $[-5,5] \times [-5,5]$.
     \item[c)] $f(x,y):=xe^{-x^2-y^2}$ pro $x,y$ z~oblasti $[-2,2] \times [-2,2]$.
     \item[d)] $f(x,y):=(x^2+y^2)(e^{-(x-y)^2}+  e^{-(x+y)^2})+80/(1+x^2+y^2)$
               pro $x,y$ z~oblasti $[-5,5] \times [-5,5]$.
     \item[e)] V~ploše funkce  ad d) zvýrazněte barevnou tlustou čarou
           trajektorii odpovídající řezu rovinou kolmou na rovinu $x-y$
           a protínající ji v~přímce procházející body $[0,4]$ a $[4,0]$.
     \item[f)] Meňte u~obrázků různými způsoby detaily grafického provedení
           (úhel pohledu, směr a barevné složení světelného zdroje apod.).
     \item[g)] Prohlédněte si další firemní demonstrace grafiky.
       \end{itemize}
   \end{enumerate}

  \item[Lekce 10:]
       elementární funkce a jejich průběhy,
       příkazy vztahující se k~náročnějším tématickým okruhům
       z~maticové a polynomiální algebry.
   \begin{enumerate}
     \item Jedním příkazem \verb|fplot| vykreslete průběh dvou funkcí:
           sinus s~amplitudou 8 a kosinus s~amplitudou 6 na intervalu $[0,2\pi]$.

     \item Do proměnné \verb|r| spočtěte kořeny polynomu $P(x)=2x^3-12x^2-144x-54$.

     \item Pomocí \verb|r| sestavte polynom $p(x)$ s~týmiž kořeny;
           vysvětlete vztah mezi oběma polynomy $p(x)$ a $P(x)$.

     \item Nalezněte matici \verb|A| asociovanou s~polynomem $p(x)$ a oveřte, že
           $p(x)$ je skutečně jejím charakteristickým polynomem.

     \item Vytvořte náhodnou matici \verb|X| rozměru $2 \times 3$ a sestavte
           matici \verb|Y| téhož
           rozměru, která je vyhodnocením polynomu $p(x)$ na \verb|X|,
           tj. $Y(i,j)=p(X(i,j))$.

     \item Ověřte platnost Cayley-Hamiltonovy věty pro matici \verb|A|,
           tj. \verb|A|
           musí být v~maticovém smyslu kořenem svého charakteristického
           polynomu (použijte příkaz \verb|polyvalm|).

     \item Nalezněte polynom $c(x)$, který je součinem polynomů
           $a(x)=x^3+2x^2+3x+4$ a $b(x)=10x^2+20x+30$.

     \item Proveďte dělení polynomu $d(x)=c(x)+2(x-1)$ polynomem $b(x)$ a určete
           současně nejen podíl, ale i zbytek po dělení.

     \item Nalezněte rozklad na parciální zlomky racionální lomené funkce
           $d(x)/b(x)$ nejprve nad tělesem komplexních čísel a odtud pak
           spočtěte jeho tvar nad tělesem reálných čísel.

     \item Nalezněte interpolační polynom funkce $\sin(x)$ procházející
           jejími body pro $x=0,\pi/2,\pi,3\pi/2,2\pi$; oba průběhy
           znázorněte graficky a do samostatného obrázku vykreslete
           průběh chybové funkce (rozdíl mezi oběma funkcemi).
   \end{enumerate}

%  \item[Lekce 11:]
%       informativní přehled nových datových typů zavedených od verze 5.0:
%       vícerozměrná pole (N-D array), buněčná pole (cell array), struktury a
%       objekty.
%   \begin{enumerate}

%   \end{enumerate}
\end{description}

\newpage

\nocite{The92a}
\nocite{The92b}
\nocite{Svo01}
\nocite{Her94}
\nocite{Her95}
\nocite{Lan69}
\nocite{Gan88}
\nocite{PESMI96}

\bibliographystyle{\bst{unsrt}}
\bibliography{\file{general}}

\end{document}
