diff --git a/README.md b/README.md index 7035122..703cb8f 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,57 @@ -oi-bszz -======= - -Otázky státních závěrečných zkoušek pro studijní program Otevřená informatika ČVUT FEL - -[Seznam všech otázek](http://www.fel.cvut.cz/education/bachelor/topicsOI.html) - -[FAQ](https://github.com/janfabian/oi-bszz/wiki/FAQ) - -Hotové otázky -------------- - -### Společná část - -01\. Lineární závislost a nezávislost, báze, dimenze. Lineární zobrazení, jádro a obor hodnot, skalární a vektorový součin. (A0B01LAG) - -02\. Matice, determinant, inverzní matice, vlastní čísla a vlastní vektory matice. Soustavy lineárních rovnic. (A0B01LAG) - -03\. Vlastnosti celých čísel (dělitelnost, prvočísla) a Eukleidův algoritmus. Binární relace, zejména ekvivalence a uspořádání, a jejich reprezentace. Počítání modulo. (A4B01DMA) - -04\. Kombinatorika (kombinatorická čísla, princip inkluze a exkluze); Využití matematické indukce; rekurzivní vztahy (řešení rovnic, odhad náročnosti algoritmů) (A4B01DMA) - -05\. Imperativní programování, software, překladač, interpret, vnitřní forma, programovací jazyky, syntaxe, sémantika, proměnné, výrazy, vstup, výstup, řídící struktury, jednoduché datové typy, přiřazení, funkce, procedury, parametry, rozklad problému na podproblémy, princip rekurze a iterace (A0B36PR1) - -06\. Principy objektového přístupu, třída jako: programová jednotka, zdroj funkcí, datový typ; struktura objektu, konstruktory, přetěžování, instance třídy, hierarchie tříd, dědění, kompozice; abstraktní třídy, polymorfismus, rozhraní, rozhraní jako typ proměnné, typ interface. (A0B36PR1) - -07\. Principy objektového přístupu, třída jako: programová jednotka, zdroj funkcí, datový typ; struktura objektu, konstruktory, přetěžování, instance třídy, hierarchie tříd, dědění, kompozice; abstraktní třídy, polymorfismus, rozhraní, rozhraní jako typ proměnné, typ interface. (A0B36PR1) - -08\. Limita funkce a posloupnosti, zejména rychlosti růstu v nekonečnu a l'Hospitalovo pravidlo. Derivace a parciální derivace: výpočet a význam (rychlost změny, monotonie, extrémy, gradient). (A4B01MA2) - -09\. Význam integrálu, základní metody výpočtu a nevlastní integrál; řady a jejich konvergence (význam, příklady použití, geometrická řada), Taylorův polynom a řada. (A4B01MA2) - -10\. Syntaxe a sémantika výrokové a predikátové logiky. Sémantický důsledek a tautologická ekvivalence. Booleovský kalkul. Rezoluční metoda (A0B01LGR) - -11\. Orientované a neorientované grafy, souvislost, silná souvislost, stromy a kostry, Eulerovy grafy, Hamiltonovy grafy, nezávislé množiny, barvení grafu. (A0B01LGR) - -12\. Programování v jazyce JAVA: struktura tříd a programu. Události, zdroj a posluchač události, šíření událostí, vlastní události, více zdrojů a posluchačů, rozlišení zdrojů. Výjimky a jejich zpracování, propagace výjimek, hierarchie výjimek, kontrolované a nekontrolované výjimky. (A0B36PR2) - -13\. Základy programovaní v C, charakteristika jazyka, model kompilace, struktura programu, makra, podmíněný překlad, syntaxe jazyka, struktury, uniony, výčtové typy, preprocesor, základní knihovny, základní vstup a výstup, pointery, dynamická správa paměti, pole a ukazatelé, funkce a pointery. (A0B36PR2) - -14\. Asymptotická časová a paměťová složitost algoritmů, řád růstu funkcí. (A4B36ALG) - -15\. Základní algoritmy řazení (mergesort, quicksort, heapsort, radixsort) a vyhledávání půlením intervalu, jejich složitost. (A4B36ALG) - -16\. Datové typy, seznam, zásobník, fronta, operace s nimi, jejich složitost. Vyhledávací a rozhodovací stromy (binární, AVL, B) jejich specifika a využití, efektivita operací, volba rozptylovací funkce pro specifické typy dat. (A4B36ALG) - -21\. Deterministický konečný automat, jazyk přijímaný konečným automatem. (A4B01JAG) - -22\. Regulární výrazy a regulární jazyky, Kleeneova věta. Algoritmická složitost úloh souvisejících s regulárními jazyky. (A4B01JAG) - -23\. Gramatiky, regulární gramatiky a bezkontextové gramatiky, bezkontextové jazyky. Zásobníkové automaty a jejich vztah k bezkontextovým jazykům. Vlastnosti bezkontextových gramatik, lemma o vkládání. (A4B01JAG) - -24\. Turingovy stroje. (A4B01JAG) - -29\. Mechanika - Newtonovy zákony. Kinematika a dynamika hmotného bodu. Pohybové rovnice pro inerciální a neinerciální vztažné soustavy. Práce a energie. Konzervativní silové pole, mechanické zákony zachování. I. a II. věta impulzová. Otáčivý pohyb tuhého tělesa (moment síly, hybnosti, moment setrvačnosti). Gravitační pole a příklady jeho působení (gravitační zákon, intenzita a potenciál gravitačního pole, intenzita gravitačního pole uvnitř a vně homogenní koule). Mechanické kmitavé soustavy. Netlumený a tlumený mechanický lineární oscilátor. Vynucené kmity, rezonance výchylky. (A4B02FYZ) - +oi-bszz +======= + +Otázky státních závěrečných zkoušek pro studijní program Otevřená informatika ČVUT FEL + +[Seznam všech otázek](http://www.fel.cvut.cz/education/bachelor/topicsOI.html) + +[FAQ](https://github.com/janfabian/oi-bszz/wiki/FAQ) + +Hotové otázky +------------- + +### Společná část + +01\. Lineární závislost a nezávislost, báze, dimenze. Lineární zobrazení, jádro a obor hodnot, skalární a vektorový součin. (A0B01LAG) + +02\. Matice, determinant, inverzní matice, vlastní čísla a vlastní vektory matice. Soustavy lineárních rovnic. (A0B01LAG) + +03\. Vlastnosti celých čísel (dělitelnost, prvočísla) a Eukleidův algoritmus. Binární relace, zejména ekvivalence a uspořádání, a jejich reprezentace. Počítání modulo. (A4B01DMA) + +04\. Kombinatorika (kombinatorická čísla, princip inkluze a exkluze); Využití matematické indukce; rekurzivní vztahy (řešení rovnic, odhad náročnosti algoritmů) (A4B01DMA) + +05\. Imperativní programování, software, překladač, interpret, vnitřní forma, programovací jazyky, syntaxe, sémantika, proměnné, výrazy, vstup, výstup, řídící struktury, jednoduché datové typy, přiřazení, funkce, procedury, parametry, rozklad problému na podproblémy, princip rekurze a iterace (A0B36PR1) + +06\. Principy objektového přístupu, třída jako: programová jednotka, zdroj funkcí, datový typ; struktura objektu, konstruktory, přetěžování, instance třídy, hierarchie tříd, dědění, kompozice; abstraktní třídy, polymorfismus, rozhraní, rozhraní jako typ proměnné, typ interface. (A0B36PR1) + +07\. Principy objektového přístupu, třída jako: programová jednotka, zdroj funkcí, datový typ; struktura objektu, konstruktory, přetěžování, instance třídy, hierarchie tříd, dědění, kompozice; abstraktní třídy, polymorfismus, rozhraní, rozhraní jako typ proměnné, typ interface. (A0B36PR1) + +08\. Limita funkce a posloupnosti, zejména rychlosti růstu v nekonečnu a l'Hospitalovo pravidlo. Derivace a parciální derivace: výpočet a význam (rychlost změny, monotonie, extrémy, gradient). (A4B01MA2) + +09\. Význam integrálu, základní metody výpočtu a nevlastní integrál; řady a jejich konvergence (význam, příklady použití, geometrická řada), Taylorův polynom a řada. (A4B01MA2) + +10\. Syntaxe a sémantika výrokové a predikátové logiky. Sémantický důsledek a tautologická ekvivalence. Booleovský kalkul. Rezoluční metoda (A0B01LGR) + +11\. Orientované a neorientované grafy, souvislost, silná souvislost, stromy a kostry, Eulerovy grafy, Hamiltonovy grafy, nezávislé množiny, barvení grafu. (A0B01LGR) + +12\. Programování v jazyce JAVA: struktura tříd a programu. Události, zdroj a posluchač události, šíření událostí, vlastní události, více zdrojů a posluchačů, rozlišení zdrojů. Výjimky a jejich zpracování, propagace výjimek, hierarchie výjimek, kontrolované a nekontrolované výjimky. (A0B36PR2) + +13\. Základy programovaní v C, charakteristika jazyka, model kompilace, struktura programu, makra, podmíněný překlad, syntaxe jazyka, struktury, uniony, výčtové typy, preprocesor, základní knihovny, základní vstup a výstup, pointery, dynamická správa paměti, pole a ukazatelé, funkce a pointery. (A0B36PR2) + +14\. Asymptotická časová a paměťová složitost algoritmů, řád růstu funkcí. (A4B36ALG) + +15\. Základní algoritmy řazení (mergesort, quicksort, heapsort, radixsort) a vyhledávání půlením intervalu, jejich složitost. (A4B36ALG) + +16\. Datové typy, seznam, zásobník, fronta, operace s nimi, jejich složitost. Vyhledávací a rozhodovací stromy (binární, AVL, B) jejich specifika a využití, efektivita operací, volba rozptylovací funkce pro specifické typy dat. (A4B36ALG) + +21\. Deterministický konečný automat, jazyk přijímaný konečným automatem. (A4B01JAG) + +22\. Regulární výrazy a regulární jazyky, Kleeneova věta. Algoritmická složitost úloh souvisejících s regulárními jazyky. (A4B01JAG) + +23\. Gramatiky, regulární gramatiky a bezkontextové gramatiky, bezkontextové jazyky. Zásobníkové automaty a jejich vztah k bezkontextovým jazykům. Vlastnosti bezkontextových gramatik, lemma o vkládání. (A4B01JAG) + +24\. Turingovy stroje. (A4B01JAG) + +29\. Mechanika - Newtonovy zákony. Kinematika a dynamika hmotného bodu. Pohybové rovnice pro inerciální a neinerciální vztažné soustavy. Práce a energie. Konzervativní silové pole, mechanické zákony zachování. I. a II. věta impulzová. Otáčivý pohyb tuhého tělesa (moment síly, hybnosti, moment setrvačnosti). Gravitační pole a příklady jeho působení (gravitační zákon, intenzita a potenciál gravitačního pole, intenzita gravitačního pole uvnitř a vně homogenní koule). Mechanické kmitavé soustavy. Netlumený a tlumený mechanický lineární oscilátor. Vynucené kmity, rezonance výchylky. (A4B02FYZ) + 30\. Dynamika fyzikálních systémů - základní dělení dynamických systémů, fázový portrét, stracionární (pevné) body, dynamický tok. Vyšetřování stability lineárních systémů, topologická klasifikace lineárních systémů (sedlový bod, stavilní a nestabilní spirála, stabilní a nestabilní uzel, středový bod), atraktor. Vyšetřování stability nelineárních systémů, limitní cykly, bifurkace. \ No newline at end of file diff --git a/Softwarove systemy/07/07.lyx b/Softwarove systemy/07/07.lyx index 07aae97..c7f31a5 100644 --- a/Softwarove systemy/07/07.lyx +++ b/Softwarove systemy/07/07.lyx @@ -1,887 +1,887 @@ -#LyX 2.0 created this file. For more info see http://www.lyx.org/ -\lyxformat 413 -\begin_document -\begin_header -\textclass scrreprt -\begin_preamble - - -\usepackage[english,czech]{babel} -\end_preamble -\use_default_options false -\maintain_unincluded_children false -\language czech -\language_package default -\inputencoding auto -\fontencoding default -\font_roman default -\font_sans default -\font_typewriter default -\font_default_family default -\use_non_tex_fonts false -\font_sc false -\font_osf false -\font_sf_scale 100 -\font_tt_scale 100 - -\graphics default -\default_output_format default -\output_sync 0 -\bibtex_command default -\index_command default -\paperfontsize default -\spacing single -\use_hyperref false -\papersize default -\use_geometry false -\use_amsmath 1 -\use_esint 1 -\use_mhchem 0 -\use_mathdots 0 -\cite_engine basic -\use_bibtopic false -\use_indices false -\paperorientation portrait -\suppress_date false -\use_refstyle 0 -\index Index -\shortcut idx -\color #008000 -\end_index -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\paragraph_indentation default -\quotes_language german -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\html_math_output 0 -\html_css_as_file 0 -\html_be_strict false -\end_header - -\begin_body - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Plain Layout - - -\backslash -setcounter{chapter}{6} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Chapter -Koncept jazyka na bázi virtuálniho stroje, JVM memory management, datové - struktury, výjimky, objektové programování, vlákna a synchronizace. - (A4B77ASS) -\end_layout - -\begin_layout Section -Typy programovacích jazyků -\end_layout - -\begin_layout Standard -Z hlediska vykonávání zdrojového kódu lze programovací jazyky dělit do dvou - kategorií. - -\end_layout - -\begin_layout Itemize - -\series bold -Interpretované -\series default - - přímo zdrojový kód (skript či překompilovaný byte-code) je interpretován - virtuálním strojem, který běží na cílovém zařízení -\end_layout - -\begin_layout Itemize - -\series bold -Kompilované -\series default - - zdrojový kód je nutné zkompilovat do strojového kódu cílového zařízení - a poté lze program spustit přímo -\end_layout - -\begin_layout Paragraph* -Vlastnosti interpretovaných jazyků: -\end_layout - -\begin_layout Itemize -\begin_inset Formula $\oplus$ -\end_inset - - nezávislost na platformě - architektura (RISC/CISC), operační systém -\end_layout - -\begin_layout Itemize -\begin_inset Formula $\oplus$ -\end_inset - - reflexe - sledování a modifikace kódu za běhu -\end_layout - -\begin_layout Itemize -\begin_inset Formula $\oplus$ -\end_inset - - dynamické typování -\end_layout - -\begin_layout Itemize -\begin_inset Formula $\oplus$ -\end_inset - - malá velikost zdrojových souborů -\end_layout - -\begin_layout Itemize -\begin_inset Formula $\ominus$ -\end_inset - - pomalejší vykonávání kódu v interpretovaném módu -\end_layout - -\begin_layout Section -Java Virtual Machine (JVM) -\end_layout - -\begin_layout Standard -Je zásobníkově orientovaný virtuální stroj Javy, který interpretuje Java - byte-code. - Zdrojové kódy ( -\family typewriter -.java -\family default -) je proto nutné zkompilovat do byte-code ( -\family typewriter -.class -\family default -), při kompilaci nedochází k žádným optimalizacím kódu. - Před spuštěním je byte-code verifikován (skoky jsou pouze na validní umístění, - správná inicializace dat, type-safe reference, kontrola private a protected - přístupů). - Při běhu se používá JIT. -\end_layout - -\begin_layout Paragraph* -Zásobníkový způsob předávání parametrů: -\end_layout - -\begin_layout Standard -\begin_inset Formula $(2+3)\times11+1$ -\end_inset - - -\end_layout - -\begin_layout Standard -\align center -\begin_inset Graphics - filename img/jvm_stack.png - scale 50 - -\end_inset - - -\end_layout - -\begin_layout Subsection -Just-in-time compiler (JIT) -\end_layout - -\begin_layout Standard -Za běhu konvertuje byte-code na nativní strojový kód. - Existují různé verze pro serverové a klientské aplikace (různý stupeň optimaliz -ace). - Některé prováděné optimalizace: inlining of functions, loop unrolling, - dead code elimination, loop invariant hoisting, common subexpression eliminatio -n, constant propagation, optimize branches. -\end_layout - -\begin_layout Section -JVM memory management -\end_layout - -\begin_layout Standard -V JVM je použita automatická správa paměti pomocí -\series bold -Garbage Collectoru (GC) -\series default - - živé (dosažitelné) objekty jsou ponechány v paměti a mrtvé (nedosažitelné) - jsou smazány. - Halda ( -\series bold -Heap -\series default -) je oblast pro dynamickou alokaci paměti pro všechny objekty a je rozdělena - do secí, tzv. - generací - Young a Old. -\end_layout - -\begin_layout Paragraph* -Generační koncept -\end_layout - -\begin_layout Standard -Objekty jsou v haldě rozděleny do generací podle svého stáří, zpočátku jsou - alokovány v Young generaci, pokud přežijí několik cyklů GC jsou povýšeny - (Tenuring) do Old generace. - Koncept je postaven na hypotéze, že většina objektů je krátko-žijících, - tj. - nedostanou se do Old generace. - -\end_layout - -\begin_layout Standard -\align center -\begin_inset Graphics - filename img/jvm_generations.png - scale 50 - -\end_inset - - -\end_layout - -\begin_layout Description -Young malá velikost, časté a rychlé cykly GC -\end_layout - -\begin_layout Description -Old velká velikost, málo časté a pomalé cykly GC -\end_layout - -\begin_layout Description -Eden místo pro alokaci nových objektů -\end_layout - -\begin_layout Description -From/To místo kam jsou zkopírovány přeživší objekty po běhu GC -\end_layout - -\begin_layout Description -Permanent je mimo haldu, obsahuje data pro JVM jako definice tříd, metod - a další -\end_layout - -\begin_layout Subsection -Druhy Garbage Collectorů -\end_layout - -\begin_layout Itemize - -\series bold -Sériový collector -\series default - - používá algoritmus -\emph on -mark-sweep-compact -\emph default - způsobem -\emph on -stop-the-world -\emph default -, výchozí pro klientské aplikace, efektivní na 64MB haldě -\end_layout - -\begin_deeper -\begin_layout Standard -\align center -\begin_inset Graphics - filename img/gc_serial.png - scale 50 - -\end_inset - - -\end_layout - -\end_deeper -\begin_layout Itemize - -\series bold -Paralelní collector -\series default - - pro Old generaci obyčejný sériový collector, pro Young generaci navíc - využívá více vláken/CPU, výchozí pro serverové aplikace a na více-jádrových - systémech -\end_layout - -\begin_deeper -\begin_layout Standard -\align center -\begin_inset Graphics - filename img/gc_parallel.png - scale 60 - -\end_inset - - -\end_layout - -\end_deeper -\begin_layout Itemize - -\series bold -Souběžný (Concurrent) collector -\series default - - pro Young generaci jako paralelní collector, pro Old generaci běží souběžně - s aplikací, má nízkou latenci a snižuje počet zastavení aplikace, vyžaduje - ale větší haldu -\end_layout - -\begin_deeper -\begin_layout Standard -\align center -\begin_inset Graphics - filename img/gc_concurrent.png - scale 75 - -\end_inset - - -\end_layout - -\end_deeper -\begin_layout Section -Java datové struktury -\end_layout - -\begin_layout Itemize - -\series bold -primitiva -\series default - - bez implicitní alokace, uložené na zásobníku, typy: -\family sans -boolean -\family default -, -\family sans -byte -\family default -, -\family sans -char -\family default -, -\family sans -int -\family default -, -\family sans -long -\family default -, -\family sans -float -\family default -, -\family sans -double -\family default - -\end_layout - -\begin_layout Itemize - -\series bold -objekty -\series default - - každý je potomek třídy -\family sans -Object -\family default -, uloženy na haldě, existují objekty pro primitiva: -\family sans -Boolean -\family default -, -\family sans -Byte -\family default -, -\family sans -Char -\family default -, -\family sans -Integer -\family default -, -\family sans -Long -\family default -, -\family sans -Float -\family default -, -\family sans -Double -\family default - -\end_layout - -\begin_layout Itemize - -\series bold -pole (arrays) -\series default - - speciální datová struktura pro uchovávání více primitiv/objektů stejného - typu v lineárním pořadí, mají definovaný limit, který je automaticky za - běhu kontrolován, jsou uložené na haldě, více-dimenzionální pole = pole - polí -\end_layout - -\begin_layout Subsection -Autoboxing, Unboxing, Widening -\end_layout - -\begin_layout Description -Autoboxing automatická konverze primitivních datových typů na jejich objektové - reprezentace -\end_layout - -\begin_layout Description -Unboxing opačný postup, objekty na primitiva -\end_layout - -\begin_layout Description -Widening automatická konverze menších primitiv na větší: -\begin_inset Newline newline -\end_inset - - -\family sans -byte -\family default - -\begin_inset Formula $\prec$ -\end_inset - - -\family sans -char -\family default - -\begin_inset Formula $\prec$ -\end_inset - - -\family sans -int -\family default - -\begin_inset Formula $\prec$ -\end_inset - - -\family sans -long -\family default - a -\family sans -float -\family default - -\begin_inset Formula $\prec$ -\end_inset - - -\family sans -double -\family default - -\end_layout - -\begin_layout Standard -Používání boxingu a unboxingu přináší neefektivitu. - V případě více možností má widening přednost před autoboxingem. - Při volání přetížených metod Java vybere tu s nejvíce specifickými typy - parametrů. -\end_layout - -\begin_layout Subsection -Výjimky -\end_layout - -\begin_layout Standard -Všechny extendují třídu -\family sans -Throwable -\family default - ( -\family sans -Error -\family default -, -\family sans -Exception -\family default -) a slouží k reprezentaci různých chybových stavů aplikace. - Výjimky lze dělit do dvou kategorií - kontrolované ( -\family sans -Exception -\family default -) a nekontrolované ( -\family sans -Error -\family default - a -\family sans -RuntimeException -\family default -). - Kontrolované výjimky je nutné odchytávat pomocí -\series bold -try-catch -\series default - bloku. - Pro vyhození vlastní výjimky v programu souží příkaz -\series bold -throw -\series default -. - Výjimky také obsahují záznam obsahu zásobníku ve chvíli kdy byla tato výjimka - vyhozena a případně další informace o vzniklé chybě. -\end_layout - -\begin_layout Section -Vlákna a synchronizace - Java -\end_layout - -\begin_layout Subsection -Vlákna (Threads) -\end_layout - -\begin_layout Standard -Vlákna umožňují souběžné vykonávání více úkolů najednou, vytváří se buď - extendováním třídy -\family sans -Thread -\family default - nebo implementací rozhraní -\family sans -Runnable -\family default -. - Hlavní je metoda -\series bold -run() -\series default - obsahující kód, který vlákno vykonává. - Jeden proces může mít více vláken, která sdílí společný adresní prostor, - ale všechny mají vlastní zásobník a lokální proměnné. - Každé vlákno má: ID, jméno, prioritu, thread group, uncaught exception - handler, deamon flag, class loader, interrupted flag, status. -\end_layout - -\begin_layout Subsection -Synchronizace -\end_layout - -\begin_layout Standard -Při práci s více vlákny je často nutná jejich synchronizace a umožnění bezpečnéh -o přístupu ke sdíleným prostředkům. - K tomu existuje několik technik. - -\end_layout - -\begin_layout Itemize - -\series bold -Synchronized -\series default - - S každým objektem je asociován tzv. - -\emph on -monitor -\emph default -, který umožňuje synchronizaci vláken nad tímto objektem použitím bloku - -\series bold -synchronized -\series default -. - Pro vstup do tohoto bloku je nutné aby příslušné vlákno vlastnilo tento - monitor, v jednu chvíli ale může monitor vlastnit pouze jedno vlákno. - Pokud není monitor pro vlákno dostupný, jeho běh je zastaven dokud se monitor - neuvolní. - Pro synchronizaci celé metody je možné použít klíčové slovo -\series bold -synchronized -\series default -. -\end_layout - -\begin_layout Itemize - -\series bold -Reentrant Locks -\series default - - Obdoba předchozí synchronizační techniky s manuálním získáváním a uvolňováním - zámků - metody: -\series bold -lock() -\series default -, -\series bold -unlock() -\series default -, -\series bold -tryLock() -\series default -. - Zámky je nutné manuálně vytvářet jako objekty -\family sans -ReentrantLock -\family default -, zámky je možné vytvořit -\emph on -fair -\emph default -, tj. - první čekající vlákno bude první kdo získá zámek. - Používání Reentrant zámků je v praxi efektivnější než použití synchronized, - ale zámky jsou běžné objekty na haldě. - -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -begin{verbatim}lock.lock(); -\end_layout - -\begin_layout Plain Layout - -try { -\end_layout - -\begin_layout Plain Layout - - // do some staff ... -\end_layout - -\begin_layout Plain Layout - -} finally { -\end_layout - -\begin_layout Plain Layout - - lock.unlock() -\end_layout - -\begin_layout Plain Layout - -} -\backslash -end{verbatim} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Itemize - -\series bold -Volatile proměnné -\series default - - Jsou obyčejné proměnné, které ale mají zaručen atomický read/write přístup. - Tyto proměnné nejsou nikdy uloženy lokálně pro jednotlivá vlákna, ale je - vždy přistupováno přímo do hlavní paměti. - Nevhodné pro -\emph on -read-update-write -\emph default - operace. - Použití pomocí klíčového slova -\series bold -volatile -\series default -. -\end_layout - -\begin_layout Itemize - -\series bold -Atomické proměnné -\series default - - Umožňují atomický read/write přístup i -\emph on -read-update-write -\emph default - operace. - Používají se speciální atomické instrukce procesoru - -\series bold -CMPXCHG -\series default - (compare and exchange) nebo -\series bold -CAS -\series default - (compare and swap). - Pro základní datové typy existují -\family sans -AtomicBoolean -\family default -, -\family sans -AtomicInteger -\family default -, -\family sans -AtomicLong -\family default - a -\family sans -AtomicReference -\family default - s operacemi -\series bold -get() -\series default -, -\series bold -set() -\series default -, -\series bold -compareAndSet() -\series default -, -\series bold -addAndGet() -\series default -, -\series bold -incrementAndGet() -\series default -, -\series bold -decrementAndGet() -\series default -. -\end_layout - -\begin_layout Itemize - -\series bold -Neblokující algoritmy -\series default - - Synchronizační algoritmy, které nepoužívají zámky ani čekání vláken, - ale jsou postavené na atomických CAS operacích. - Princip je, že se v nekonečné smyčce kontroluje stav atomické proměnné, - dokud není možné bezpečně pokračovat dále. - Tento princip výkonnostně převyšuje blokující algoritmy protože většina - CAS operací uspěje na první pokus. - Další výhodou je, že odstraňuje nadbytečné uspávání vláken a přepínání - kontextu. - -\end_layout - -\begin_layout Section -Návrhové vzory pro objektové programování -\end_layout - -\begin_layout Itemize - -\series bold -Immutable object -\series default - - objekt, který po dobu svého života nemění žádné své vlastnosti, all fields - are final, no setters -\end_layout - -\begin_layout Itemize - -\series bold -Factory method, Abstract factory -\series default - - k vytváření objektů se používají speciální metody či tovární třídy -\end_layout - -\begin_layout Itemize - -\series bold -Lazy initialization -\series default - - k výpočtům, inicializacím objektů a dalších dat dochází až v případě - prvního použití -\end_layout - -\begin_layout Itemize - -\series bold -Singleton -\series default - - pro danou třídu existuje pouze jedna instance v rámci celé aplikace -\end_layout - -\begin_layout Itemize - -\series bold -Multiton -\series default - - pro danou třídu existuje několik instancí s různými parametry v rámci - celé aplikace -\end_layout - -\begin_layout Itemize - -\series bold -Strategy -\series default - - definice společného rozhraní pro skupinu podobných algoritmů, umožňuje - zaměňovat různé implementace -\end_layout - -\begin_layout Itemize - -\series bold -Composite -\series default - - skládání objektů do stromových struktur, ke skupině objektů je přistupováno - jako k jediné instanci (Nodes and Leafs) -\end_layout - -\begin_layout Itemize - -\series bold -Iterator -\series default - - umožňuje sekvenční procházení kolekce po jednotlivých prvcích bez odhalení - vnitřní struktury této kolekce -\end_layout - -\begin_layout Itemize - -\series bold -Command -\series default - - zastřešuje veškeré informace potřebné pro volání metod později - client, - invoker, receiver -\end_layout - -\end_body -\end_document +#LyX 2.0 created this file. For more info see http://www.lyx.org/ +\lyxformat 413 +\begin_document +\begin_header +\textclass scrreprt +\begin_preamble + + +\usepackage[english,czech]{babel} +\end_preamble +\use_default_options false +\maintain_unincluded_children false +\language czech +\language_package default +\inputencoding auto +\fontencoding default +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 + +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_amsmath 1 +\use_esint 1 +\use_mhchem 0 +\use_mathdots 0 +\cite_engine basic +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\use_refstyle 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\quotes_language german +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Plain Layout + + +\backslash +setcounter{chapter}{6} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Chapter +Koncept jazyka na bázi virtuálniho stroje, JVM memory management, datové + struktury, výjimky, objektové programování, vlákna a synchronizace. + (A4B77ASS) +\end_layout + +\begin_layout Section +Typy programovacích jazyků +\end_layout + +\begin_layout Standard +Z hlediska vykonávání zdrojového kódu lze programovací jazyky dělit do dvou + kategorií. + +\end_layout + +\begin_layout Itemize + +\series bold +Interpretované +\series default + - přímo zdrojový kód (skript či překompilovaný byte-code) je interpretován + virtuálním strojem, který běží na cílovém zařízení +\end_layout + +\begin_layout Itemize + +\series bold +Kompilované +\series default + - zdrojový kód je nutné zkompilovat do strojového kódu cílového zařízení + a poté lze program spustit přímo +\end_layout + +\begin_layout Paragraph* +Vlastnosti interpretovaných jazyků: +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\oplus$ +\end_inset + + nezávislost na platformě - architektura (RISC/CISC), operační systém +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\oplus$ +\end_inset + + reflexe - sledování a modifikace kódu za běhu +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\oplus$ +\end_inset + + dynamické typování +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\oplus$ +\end_inset + + malá velikost zdrojových souborů +\end_layout + +\begin_layout Itemize +\begin_inset Formula $\ominus$ +\end_inset + + pomalejší vykonávání kódu v interpretovaném módu +\end_layout + +\begin_layout Section +Java Virtual Machine (JVM) +\end_layout + +\begin_layout Standard +Je zásobníkově orientovaný virtuální stroj Javy, který interpretuje Java + byte-code. + Zdrojové kódy ( +\family typewriter +.java +\family default +) je proto nutné zkompilovat do byte-code ( +\family typewriter +.class +\family default +), při kompilaci nedochází k žádným optimalizacím kódu. + Před spuštěním je byte-code verifikován (skoky jsou pouze na validní umístění, + správná inicializace dat, type-safe reference, kontrola private a protected + přístupů). + Při běhu se používá JIT. +\end_layout + +\begin_layout Paragraph* +Zásobníkový způsob předávání parametrů: +\end_layout + +\begin_layout Standard +\begin_inset Formula $(2+3)\times11+1$ +\end_inset + + +\end_layout + +\begin_layout Standard +\align center +\begin_inset Graphics + filename img/jvm_stack.png + scale 50 + +\end_inset + + +\end_layout + +\begin_layout Subsection +Just-in-time compiler (JIT) +\end_layout + +\begin_layout Standard +Za běhu konvertuje byte-code na nativní strojový kód. + Existují různé verze pro serverové a klientské aplikace (různý stupeň optimaliz +ace). + Některé prováděné optimalizace: inlining of functions, loop unrolling, + dead code elimination, loop invariant hoisting, common subexpression eliminatio +n, constant propagation, optimize branches. +\end_layout + +\begin_layout Section +JVM memory management +\end_layout + +\begin_layout Standard +V JVM je použita automatická správa paměti pomocí +\series bold +Garbage Collectoru (GC) +\series default + - živé (dosažitelné) objekty jsou ponechány v paměti a mrtvé (nedosažitelné) + jsou smazány. + Halda ( +\series bold +Heap +\series default +) je oblast pro dynamickou alokaci paměti pro všechny objekty a je rozdělena + do secí, tzv. + generací - Young a Old. +\end_layout + +\begin_layout Paragraph* +Generační koncept +\end_layout + +\begin_layout Standard +Objekty jsou v haldě rozděleny do generací podle svého stáří, zpočátku jsou + alokovány v Young generaci, pokud přežijí několik cyklů GC jsou povýšeny + (Tenuring) do Old generace. + Koncept je postaven na hypotéze, že většina objektů je krátko-žijících, + tj. + nedostanou se do Old generace. + +\end_layout + +\begin_layout Standard +\align center +\begin_inset Graphics + filename img/jvm_generations.png + scale 50 + +\end_inset + + +\end_layout + +\begin_layout Description +Young malá velikost, časté a rychlé cykly GC +\end_layout + +\begin_layout Description +Old velká velikost, málo časté a pomalé cykly GC +\end_layout + +\begin_layout Description +Eden místo pro alokaci nových objektů +\end_layout + +\begin_layout Description +From/To místo kam jsou zkopírovány přeživší objekty po běhu GC +\end_layout + +\begin_layout Description +Permanent je mimo haldu, obsahuje data pro JVM jako definice tříd, metod + a další +\end_layout + +\begin_layout Subsection +Druhy Garbage Collectorů +\end_layout + +\begin_layout Itemize + +\series bold +Sériový collector +\series default + - používá algoritmus +\emph on +mark-sweep-compact +\emph default + způsobem +\emph on +stop-the-world +\emph default +, výchozí pro klientské aplikace, efektivní na 64MB haldě +\end_layout + +\begin_deeper +\begin_layout Standard +\align center +\begin_inset Graphics + filename img/gc_serial.png + scale 50 + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Paralelní collector +\series default + - pro Old generaci obyčejný sériový collector, pro Young generaci navíc + využívá více vláken/CPU, výchozí pro serverové aplikace a na více-jádrových + systémech +\end_layout + +\begin_deeper +\begin_layout Standard +\align center +\begin_inset Graphics + filename img/gc_parallel.png + scale 60 + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Itemize + +\series bold +Souběžný (Concurrent) collector +\series default + - pro Young generaci jako paralelní collector, pro Old generaci běží souběžně + s aplikací, má nízkou latenci a snižuje počet zastavení aplikace, vyžaduje + ale větší haldu +\end_layout + +\begin_deeper +\begin_layout Standard +\align center +\begin_inset Graphics + filename img/gc_concurrent.png + scale 75 + +\end_inset + + +\end_layout + +\end_deeper +\begin_layout Section +Java datové struktury +\end_layout + +\begin_layout Itemize + +\series bold +primitiva +\series default + - bez implicitní alokace, uložené na zásobníku, typy: +\family sans +boolean +\family default +, +\family sans +byte +\family default +, +\family sans +char +\family default +, +\family sans +int +\family default +, +\family sans +long +\family default +, +\family sans +float +\family default +, +\family sans +double +\family default + +\end_layout + +\begin_layout Itemize + +\series bold +objekty +\series default + - každý je potomek třídy +\family sans +Object +\family default +, uloženy na haldě, existují objekty pro primitiva: +\family sans +Boolean +\family default +, +\family sans +Byte +\family default +, +\family sans +Char +\family default +, +\family sans +Integer +\family default +, +\family sans +Long +\family default +, +\family sans +Float +\family default +, +\family sans +Double +\family default + +\end_layout + +\begin_layout Itemize + +\series bold +pole (arrays) +\series default + - speciální datová struktura pro uchovávání více primitiv/objektů stejného + typu v lineárním pořadí, mají definovaný limit, který je automaticky za + běhu kontrolován, jsou uložené na haldě, více-dimenzionální pole = pole + polí +\end_layout + +\begin_layout Subsection +Autoboxing, Unboxing, Widening +\end_layout + +\begin_layout Description +Autoboxing automatická konverze primitivních datových typů na jejich objektové + reprezentace +\end_layout + +\begin_layout Description +Unboxing opačný postup, objekty na primitiva +\end_layout + +\begin_layout Description +Widening automatická konverze menších primitiv na větší: +\begin_inset Newline newline +\end_inset + + +\family sans +byte +\family default + +\begin_inset Formula $\prec$ +\end_inset + + +\family sans +char +\family default + +\begin_inset Formula $\prec$ +\end_inset + + +\family sans +int +\family default + +\begin_inset Formula $\prec$ +\end_inset + + +\family sans +long +\family default + a +\family sans +float +\family default + +\begin_inset Formula $\prec$ +\end_inset + + +\family sans +double +\family default + +\end_layout + +\begin_layout Standard +Používání boxingu a unboxingu přináší neefektivitu. + V případě více možností má widening přednost před autoboxingem. + Při volání přetížených metod Java vybere tu s nejvíce specifickými typy + parametrů. +\end_layout + +\begin_layout Subsection +Výjimky +\end_layout + +\begin_layout Standard +Všechny extendují třídu +\family sans +Throwable +\family default + ( +\family sans +Error +\family default +, +\family sans +Exception +\family default +) a slouží k reprezentaci různých chybových stavů aplikace. + Výjimky lze dělit do dvou kategorií - kontrolované ( +\family sans +Exception +\family default +) a nekontrolované ( +\family sans +Error +\family default + a +\family sans +RuntimeException +\family default +). + Kontrolované výjimky je nutné odchytávat pomocí +\series bold +try-catch +\series default + bloku. + Pro vyhození vlastní výjimky v programu souží příkaz +\series bold +throw +\series default +. + Výjimky také obsahují záznam obsahu zásobníku ve chvíli kdy byla tato výjimka + vyhozena a případně další informace o vzniklé chybě. +\end_layout + +\begin_layout Section +Vlákna a synchronizace - Java +\end_layout + +\begin_layout Subsection +Vlákna (Threads) +\end_layout + +\begin_layout Standard +Vlákna umožňují souběžné vykonávání více úkolů najednou, vytváří se buď + extendováním třídy +\family sans +Thread +\family default + nebo implementací rozhraní +\family sans +Runnable +\family default +. + Hlavní je metoda +\series bold +run() +\series default + obsahující kód, který vlákno vykonává. + Jeden proces může mít více vláken, která sdílí společný adresní prostor, + ale všechny mají vlastní zásobník a lokální proměnné. + Každé vlákno má: ID, jméno, prioritu, thread group, uncaught exception + handler, deamon flag, class loader, interrupted flag, status. +\end_layout + +\begin_layout Subsection +Synchronizace +\end_layout + +\begin_layout Standard +Při práci s více vlákny je často nutná jejich synchronizace a umožnění bezpečnéh +o přístupu ke sdíleným prostředkům. + K tomu existuje několik technik. + +\end_layout + +\begin_layout Itemize + +\series bold +Synchronized +\series default + - S každým objektem je asociován tzv. + +\emph on +monitor +\emph default +, který umožňuje synchronizaci vláken nad tímto objektem použitím bloku + +\series bold +synchronized +\series default +. + Pro vstup do tohoto bloku je nutné aby příslušné vlákno vlastnilo tento + monitor, v jednu chvíli ale může monitor vlastnit pouze jedno vlákno. + Pokud není monitor pro vlákno dostupný, jeho běh je zastaven dokud se monitor + neuvolní. + Pro synchronizaci celé metody je možné použít klíčové slovo +\series bold +synchronized +\series default +. +\end_layout + +\begin_layout Itemize + +\series bold +Reentrant Locks +\series default + - Obdoba předchozí synchronizační techniky s manuálním získáváním a uvolňováním + zámků - metody: +\series bold +lock() +\series default +, +\series bold +unlock() +\series default +, +\series bold +tryLock() +\series default +. + Zámky je nutné manuálně vytvářet jako objekty +\family sans +ReentrantLock +\family default +, zámky je možné vytvořit +\emph on +fair +\emph default +, tj. + první čekající vlákno bude první kdo získá zámek. + Používání Reentrant zámků je v praxi efektivnější než použití synchronized, + ale zámky jsou běžné objekty na haldě. + +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{verbatim}lock.lock(); +\end_layout + +\begin_layout Plain Layout + +try { +\end_layout + +\begin_layout Plain Layout + + // do some staff ... +\end_layout + +\begin_layout Plain Layout + +} finally { +\end_layout + +\begin_layout Plain Layout + + lock.unlock() +\end_layout + +\begin_layout Plain Layout + +} +\backslash +end{verbatim} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Itemize + +\series bold +Volatile proměnné +\series default + - Jsou obyčejné proměnné, které ale mají zaručen atomický read/write přístup. + Tyto proměnné nejsou nikdy uloženy lokálně pro jednotlivá vlákna, ale je + vždy přistupováno přímo do hlavní paměti. + Nevhodné pro +\emph on +read-update-write +\emph default + operace. + Použití pomocí klíčového slova +\series bold +volatile +\series default +. +\end_layout + +\begin_layout Itemize + +\series bold +Atomické proměnné +\series default + - Umožňují atomický read/write přístup i +\emph on +read-update-write +\emph default + operace. + Používají se speciální atomické instrukce procesoru - +\series bold +CMPXCHG +\series default + (compare and exchange) nebo +\series bold +CAS +\series default + (compare and swap). + Pro základní datové typy existují +\family sans +AtomicBoolean +\family default +, +\family sans +AtomicInteger +\family default +, +\family sans +AtomicLong +\family default + a +\family sans +AtomicReference +\family default + s operacemi +\series bold +get() +\series default +, +\series bold +set() +\series default +, +\series bold +compareAndSet() +\series default +, +\series bold +addAndGet() +\series default +, +\series bold +incrementAndGet() +\series default +, +\series bold +decrementAndGet() +\series default +. +\end_layout + +\begin_layout Itemize + +\series bold +Neblokující algoritmy +\series default + - Synchronizační algoritmy, které nepoužívají zámky ani čekání vláken, + ale jsou postavené na atomických CAS operacích. + Princip je, že se v nekonečné smyčce kontroluje stav atomické proměnné, + dokud není možné bezpečně pokračovat dále. + Tento princip výkonnostně převyšuje blokující algoritmy protože většina + CAS operací uspěje na první pokus. + Další výhodou je, že odstraňuje nadbytečné uspávání vláken a přepínání + kontextu. + +\end_layout + +\begin_layout Section +Návrhové vzory pro objektové programování +\end_layout + +\begin_layout Itemize + +\series bold +Immutable object +\series default + - objekt, který po dobu svého života nemění žádné své vlastnosti, all fields + are final, no setters +\end_layout + +\begin_layout Itemize + +\series bold +Factory method, Abstract factory +\series default + - k vytváření objektů se používají speciální metody či tovární třídy +\end_layout + +\begin_layout Itemize + +\series bold +Lazy initialization +\series default + - k výpočtům, inicializacím objektů a dalších dat dochází až v případě + prvního použití +\end_layout + +\begin_layout Itemize + +\series bold +Singleton +\series default + - pro danou třídu existuje pouze jedna instance v rámci celé aplikace +\end_layout + +\begin_layout Itemize + +\series bold +Multiton +\series default + - pro danou třídu existuje několik instancí s různými parametry v rámci + celé aplikace +\end_layout + +\begin_layout Itemize + +\series bold +Strategy +\series default + - definice společného rozhraní pro skupinu podobných algoritmů, umožňuje + zaměňovat různé implementace +\end_layout + +\begin_layout Itemize + +\series bold +Composite +\series default + - skládání objektů do stromových struktur, ke skupině objektů je přistupováno + jako k jediné instanci (Nodes and Leafs) +\end_layout + +\begin_layout Itemize + +\series bold +Iterator +\series default + - umožňuje sekvenční procházení kolekce po jednotlivých prvcích bez odhalení + vnitřní struktury této kolekce +\end_layout + +\begin_layout Itemize + +\series bold +Command +\series default + - zastřešuje veškeré informace potřebné pro volání metod později - client, + invoker, receiver +\end_layout + +\end_body +\end_document diff --git a/Softwarove systemy/07/07.tex b/Softwarove systemy/07/07.tex index cb4ed38..a714b23 100644 --- a/Softwarove systemy/07/07.tex +++ b/Softwarove systemy/07/07.tex @@ -1,129 +1,129 @@ -\documentclass{scrreprt} - -\usepackage[english,czech]{babel} -\usepackage[utf8]{inputenc} -\usepackage{graphicx} - -\begin{document} - -\setcounter{chapter}{6} -\chapter{Koncept jazyka na bázi virtuálniho stroje, JVM memory management, datové struktury, výjimky, objektové programování, vlákna a synchronizace. (A4B77ASS)} - -\section{Typy programovacích jazyků} -Z hlediska vykonávání zdrojového kódu lze programovací jazyky dělit do dvou kategorií. -\begin{itemize} -\item \textbf{Interpretované} - přímo zdrojový kód (skript či překompilovaný byte-code) je interpretován virtuálním strojem, který běží na cílovém zařízení -\item \textbf{Kompilované} - zdrojový kód je nutné zkompilovat do strojového kódu cílového zařízení a poté lze program spustit přímo -\end{itemize} - -\paragraph*{Vlastnosti interpretovaných jazyků:} -\begin{itemize} -\item[$\oplus$] nezávislost na platformě - architektura (RISC/CISC), operační systém -\item[$\oplus$] reflexe - sledování a modifikace kódu za běhu -\item[$\oplus$] dynamické typování -\item[$\oplus$] malá velikost zdrojových souborů -\item[$\ominus$] pomalejší vykonávání kódu v interpretovaném módu -\end{itemize} - -\section{Java Virtual Machine (JVM)} -Je zásobníkově orientovaný virtuální stroj Javy, který interpretuje Java byte-code. Zdrojové kódy (\texttt{.java}) je proto nutné zkompilovat do byte-code (\texttt{.class}), při kompilaci nedochází k žádným optimalizacím kódu. Před spuštěním je byte-code verifikován (skoky jsou pouze na validní umístění, správná inicializace dat, type-safe reference, kontrola private a protected přístupů). Při běhu se používá JIT. - -\paragraph*{Zásobníkový způsob předávání parametrů:} $(2 + 3) \times 11 + 1$ -\begin{center} -\includegraphics[scale=0.5]{img/jvm_stack} -\end{center} - -\subsection{Just-in-time compiler (JIT)} -Za běhu konvertuje byte-code na nativní strojový kód. Existují různé verze pro serverové a klientské aplikace (různý stupeň optimalizace). Některé prováděné optimalizace: inlining of functions, loop unrolling, dead code elimination, loop invariant hoisting, common subexpression elimination, constant propagation, optimize branches. - -\section{JVM memory management} -V JVM je použita automatická správa paměti pomocí \textbf{Garbage Collectoru (GC)} - živé (dosažitelné) objekty jsou ponechány v paměti a mrtvé (nedosažitelné) jsou smazány. Halda (\textbf{Heap}) je oblast pro dynamickou alokaci paměti pro všechny objekty a je rozdělena do secí, tzv. generací - Young a Old. - -\paragraph*{Generační koncept} -Objekty jsou v haldě rozděleny do generací podle svého stáří, zpočátku jsou alokovány v Young generaci, pokud přežijí několik cyklů GC jsou povýšeny (Tenuring) do Old generace. Koncept je postaven na hypotéze, že většina objektů je krátko-žijících, tj. nedostanou se do Old generace. -\begin{center} -\includegraphics[scale=0.5]{img/jvm_generations} -\end{center} -\begin{description} -\item[Young] malá velikost, časté a rychlé cykly GC -\item[Old] velká velikost, málo časté a pomalé cykly GC -\item[Eden] místo pro alokaci nových objektů -\item[From/To] místo kam jsou zkopírovány přeživší objekty po běhu GC -\item[Permanent] je mimo haldu, obsahuje data pro JVM jako definice tříd, metod a další -\end{description} - -\subsection{Druhy Garbage Collectorů} -\begin{itemize} -\item \textbf{Sériový collector} - používá algoritmus \emph{mark-sweep-compact} způsobem \emph{stop-the-world}, výchozí pro klientské aplikace, efektivní na 64MB haldě -\begin{center} -\includegraphics[scale=0.5]{img/gc_serial} -\end{center} -\item \textbf{Paralelní collector} - pro Old generaci obyčejný sériový collector, pro Young generaci navíc využívá více vláken/CPU, výchozí pro serverové aplikace a na více-jádrových systémech -\begin{center} -\includegraphics[scale=0.6]{img/gc_parallel} -\end{center} -\item \textbf{Souběžný (Concurrent) collector} - pro Young generaci jako paralelní collector, pro Old generaci běží souběžně s aplikací, má nízkou latenci a snižuje počet zastavení aplikace, vyžaduje ale větší haldu -\begin{center} -\includegraphics[scale=0.75]{img/gc_concurrent} -\end{center} -\end{itemize} - -\section{Java datové struktury} -\begin{itemize} -\item \textbf{primitiva} - bez implicitní alokace, uložené na zásobníku, typy: \textsf{boolean}, \textsf{byte}, \textsf{char}, \textsf{int}, \textsf{long}, \textsf{float}, \textsf{double} -\item \textbf{objekty} - každý je potomek třídy \textsf{Object}, uloženy na haldě, existují objekty pro primitiva: \textsf{Boolean}, \textsf{Byte}, \textsf{Char}, \textsf{Integer}, \textsf{Long}, \textsf{Float}, \textsf{Double} -\item \textbf{pole (arrays)} - speciální datová struktura pro uchovávání více primitiv/objektů stejného typu v lineárním pořadí, mají definovaný limit, který je automaticky za běhu kontrolován, jsou uložené na haldě, více-dimenzionální pole = pole polí -\end{itemize} - -\subsection{Autoboxing, Unboxing, Widening} -\begin{description} -\item[Autoboxing] automatická konverze primitivních datových typů na jejich objektové reprezentace -\item[Unboxing] opačný postup, objekty na primitiva -\item[Widening] automatická konverze menších primitiv na větší: \\ \textsf{byte} $\prec$ \textsf{char} $\prec$ \textsf{int} $\prec$ \textsf{long} a \textsf{float} $\prec$ \textsf{double} -\end{description} -Používání boxingu a unboxingu přináší neefektivitu. V případě více možností má widening přednost před autoboxingem. Při volání přetížených metod Java vybere tu s nejvíce specifickými typy parametrů. - -\subsection{Výjimky} -Všechny extendují třídu \textsf{Throwable} (\textsf{Error}, \textsf{Exception}) a slouží k reprezentaci různých chybových stavů aplikace. Výjimky lze dělit do dvou kategorií - kontrolované (\textsf{Exception}) a nekontrolované (\textsf{Error} a \textsf{RuntimeException}). Kontrolované výjimky je nutné odchytávat pomocí \textbf{try-catch} bloku. Pro vyhození vlastní výjimky v programu souží příkaz \textbf{throw}. Výjimky také obsahují záznam obsahu zásobníku ve chvíli kdy byla tato výjimka vyhozena a případně další informace o vzniklé chybě. - -\section{Vlákna a synchronizace - Java} - -\subsection{Vlákna (Threads)} -Vlákna umožňují souběžné vykonávání více úkolů najednou, vytváří se buď extendováním třídy \textsf{Thread} nebo implementací rozhraní \textsf{Runnable}. Hlavní je metoda \textbf{run()} obsahující kód, který vlákno vykonává. Jeden proces může mít více vláken, která sdílí společný adresní prostor, ale všechny mají vlastní zásobník a lokální proměnné. Každé vlákno má: ID, jméno, prioritu, thread group, uncaught exception handler, deamon flag, class loader, interrupted flag, status. - -\subsection{Synchronizace} -Při práci s více vlákny je často nutná jejich synchronizace a umožnění bezpečného přístupu ke sdíleným prostředkům. K tomu existuje několik technik. -\begin{itemize} -\item \textbf{Synchronized} - S každým objektem je asociován tzv. \emph{monitor}, který umožňuje synchronizaci vláken nad tímto objektem použitím bloku \textbf{synchronized}. Pro vstup do tohoto bloku je nutné aby příslušné vlákno vlastnilo tento monitor, v jednu chvíli ale může monitor vlastnit pouze jedno vlákno. Pokud není monitor pro vlákno dostupný, jeho běh je zastaven dokud se monitor neuvolní. Pro synchronizaci celé metody je možné použít klíčové slovo \textbf{synchronized}. - -\item \textbf{Reentrant Locks} - Obdoba předchozí synchronizační techniky s manuálním získáváním a uvolňováním zámků - metody: \textbf{lock()}, \textbf{unlock()}, \textbf{tryLock()}. Zámky je nutné manuálně vytvářet jako objekty \textsf{ReentrantLock}, zámky je možné vytvořit \emph{fair}, tj. první čekající vlákno bude první kdo získá zámek. Používání Reentrant zámků je v praxi efektivnější než použití synchronized, ale zámky jsou běžné objekty na haldě. -\begin{verbatim} -lock.lock(); -try { - // do some staff ... -} finally { - lock.unlock() -} -\end{verbatim} - -\item \textbf{Volatile proměnné} - Jsou obyčejné proměnné, které ale mají zaručen atomický read/write přístup. Tyto proměnné nejsou nikdy uloženy lokálně pro jednotlivá vlákna, ale je vždy přistupováno přímo do hlavní paměti. Nevhodné pro \emph{read-update-write} operace. Použití pomocí klíčového slova \textbf{volatile}. - -\item \textbf{Atomické proměnné} - Umožňují atomický read/write přístup i \emph{read-update-write} operace. Používají se speciální atomické instrukce procesoru - \textbf{CMPXCHG} (compare and exchange) nebo \textbf{CAS} (compare and swap). Pro základní datové typy existují \textsf{AtomicBoolean}, \textsf{AtomicInteger}, \textsf{AtomicLong} a \textsf{AtomicReference} s operacemi \textbf{get()}, \textbf{set()}, \textbf{compareAndSet()}, \textbf{addAndGet()}, \textbf{incrementAndGet()}, \textbf{decrementAndGet()}. - -\item \textbf{Neblokující algoritmy} - Synchronizační algoritmy, které nepoužívají zámky ani čekání vláken, ale jsou postavené na atomických CAS operacích. Princip je, že se v nekonečné smyčce kontroluje stav atomické proměnné, dokud není možné bezpečně pokračovat dále. Tento princip výkonnostně převyšuje blokující algoritmy protože většina CAS operací uspěje na první pokus. Další výhodou je, že odstraňuje nadbytečné uspávání vláken a přepínání kontextu. -\end{itemize} - -\section{Návrhové vzory pro objektové programování} -\begin{itemize} -\item \textbf{Immutable object} - objekt, který po dobu svého života nemění žádné své vlastnosti, all fields are final, no setters -\item \textbf{Factory method, Abstract factory} - k vytváření objektů se používají speciální metody či tovární třídy -\item \textbf{Lazy initialization} - k výpočtům, inicializacím objektů a dalších dat dochází až v případě prvního použití -\item \textbf{Singleton} - pro danou třídu existuje pouze jedna instance v rámci celé aplikace -\item \textbf{Multiton} - pro danou třídu existuje několik instancí s různými parametry v rámci celé aplikace -\item \textbf{Strategy} - definice společného rozhraní pro skupinu podobných algoritmů, umožňuje zaměňovat různé implementace -\item \textbf{Composite} - skládání objektů do stromových struktur, ke skupině objektů je přistupováno jako k jediné instanci (Nodes and Leafs) -\item \textbf{Iterator} - umožňuje sekvenční procházení kolekce po jednotlivých prvcích bez odhalení vnitřní struktury této kolekce -\item \textbf{Command} - zastřešuje veškeré informace potřebné pro volání metod později - client, invoker, receiver -\end{itemize} - -\end{document} +\documentclass{scrreprt} + +\usepackage[english,czech]{babel} +\usepackage[utf8]{inputenc} +\usepackage{graphicx} + +\begin{document} + +\setcounter{chapter}{6} +\chapter{Koncept jazyka na bázi virtuálniho stroje, JVM memory management, datové struktury, výjimky, objektové programování, vlákna a synchronizace. (A4B77ASS)} + +\section{Typy programovacích jazyků} +Z hlediska vykonávání zdrojového kódu lze programovací jazyky dělit do dvou kategorií. +\begin{itemize} +\item \textbf{Interpretované} - přímo zdrojový kód (skript či překompilovaný byte-code) je interpretován virtuálním strojem, který běží na cílovém zařízení +\item \textbf{Kompilované} - zdrojový kód je nutné zkompilovat do strojového kódu cílového zařízení a poté lze program spustit přímo +\end{itemize} + +\paragraph*{Vlastnosti interpretovaných jazyků:} +\begin{itemize} +\item[$\oplus$] nezávislost na platformě - architektura (RISC/CISC), operační systém +\item[$\oplus$] reflexe - sledování a modifikace kódu za běhu +\item[$\oplus$] dynamické typování +\item[$\oplus$] malá velikost zdrojových souborů +\item[$\ominus$] pomalejší vykonávání kódu v interpretovaném módu +\end{itemize} + +\section{Java Virtual Machine (JVM)} +Je zásobníkově orientovaný virtuální stroj Javy, který interpretuje Java byte-code. Zdrojové kódy (\texttt{.java}) je proto nutné zkompilovat do byte-code (\texttt{.class}), při kompilaci nedochází k žádným optimalizacím kódu. Před spuštěním je byte-code verifikován (skoky jsou pouze na validní umístění, správná inicializace dat, type-safe reference, kontrola private a protected přístupů). Při běhu se používá JIT. + +\paragraph*{Zásobníkový způsob předávání parametrů:} $(2 + 3) \times 11 + 1$ +\begin{center} +\includegraphics[scale=0.5]{img/jvm_stack} +\end{center} + +\subsection{Just-in-time compiler (JIT)} +Za běhu konvertuje byte-code na nativní strojový kód. Existují různé verze pro serverové a klientské aplikace (různý stupeň optimalizace). Některé prováděné optimalizace: inlining of functions, loop unrolling, dead code elimination, loop invariant hoisting, common subexpression elimination, constant propagation, optimize branches. + +\section{JVM memory management} +V JVM je použita automatická správa paměti pomocí \textbf{Garbage Collectoru (GC)} - živé (dosažitelné) objekty jsou ponechány v paměti a mrtvé (nedosažitelné) jsou smazány. Halda (\textbf{Heap}) je oblast pro dynamickou alokaci paměti pro všechny objekty a je rozdělena do secí, tzv. generací - Young a Old. + +\paragraph*{Generační koncept} +Objekty jsou v haldě rozděleny do generací podle svého stáří, zpočátku jsou alokovány v Young generaci, pokud přežijí několik cyklů GC jsou povýšeny (Tenuring) do Old generace. Koncept je postaven na hypotéze, že většina objektů je krátko-žijících, tj. nedostanou se do Old generace. +\begin{center} +\includegraphics[scale=0.5]{img/jvm_generations} +\end{center} +\begin{description} +\item[Young] malá velikost, časté a rychlé cykly GC +\item[Old] velká velikost, málo časté a pomalé cykly GC +\item[Eden] místo pro alokaci nových objektů +\item[From/To] místo kam jsou zkopírovány přeživší objekty po běhu GC +\item[Permanent] je mimo haldu, obsahuje data pro JVM jako definice tříd, metod a další +\end{description} + +\subsection{Druhy Garbage Collectorů} +\begin{itemize} +\item \textbf{Sériový collector} - používá algoritmus \emph{mark-sweep-compact} způsobem \emph{stop-the-world}, výchozí pro klientské aplikace, efektivní na 64MB haldě +\begin{center} +\includegraphics[scale=0.5]{img/gc_serial} +\end{center} +\item \textbf{Paralelní collector} - pro Old generaci obyčejný sériový collector, pro Young generaci navíc využívá více vláken/CPU, výchozí pro serverové aplikace a na více-jádrových systémech +\begin{center} +\includegraphics[scale=0.6]{img/gc_parallel} +\end{center} +\item \textbf{Souběžný (Concurrent) collector} - pro Young generaci jako paralelní collector, pro Old generaci běží souběžně s aplikací, má nízkou latenci a snižuje počet zastavení aplikace, vyžaduje ale větší haldu +\begin{center} +\includegraphics[scale=0.75]{img/gc_concurrent} +\end{center} +\end{itemize} + +\section{Java datové struktury} +\begin{itemize} +\item \textbf{primitiva} - bez implicitní alokace, uložené na zásobníku, typy: \textsf{boolean}, \textsf{byte}, \textsf{char}, \textsf{int}, \textsf{long}, \textsf{float}, \textsf{double} +\item \textbf{objekty} - každý je potomek třídy \textsf{Object}, uloženy na haldě, existují objekty pro primitiva: \textsf{Boolean}, \textsf{Byte}, \textsf{Char}, \textsf{Integer}, \textsf{Long}, \textsf{Float}, \textsf{Double} +\item \textbf{pole (arrays)} - speciální datová struktura pro uchovávání více primitiv/objektů stejného typu v lineárním pořadí, mají definovaný limit, který je automaticky za běhu kontrolován, jsou uložené na haldě, více-dimenzionální pole = pole polí +\end{itemize} + +\subsection{Autoboxing, Unboxing, Widening} +\begin{description} +\item[Autoboxing] automatická konverze primitivních datových typů na jejich objektové reprezentace +\item[Unboxing] opačný postup, objekty na primitiva +\item[Widening] automatická konverze menších primitiv na větší: \\ \textsf{byte} $\prec$ \textsf{char} $\prec$ \textsf{int} $\prec$ \textsf{long} a \textsf{float} $\prec$ \textsf{double} +\end{description} +Používání boxingu a unboxingu přináší neefektivitu. V případě více možností má widening přednost před autoboxingem. Při volání přetížených metod Java vybere tu s nejvíce specifickými typy parametrů. + +\subsection{Výjimky} +Všechny extendují třídu \textsf{Throwable} (\textsf{Error}, \textsf{Exception}) a slouží k reprezentaci různých chybových stavů aplikace. Výjimky lze dělit do dvou kategorií - kontrolované (\textsf{Exception}) a nekontrolované (\textsf{Error} a \textsf{RuntimeException}). Kontrolované výjimky je nutné odchytávat pomocí \textbf{try-catch} bloku. Pro vyhození vlastní výjimky v programu souží příkaz \textbf{throw}. Výjimky také obsahují záznam obsahu zásobníku ve chvíli kdy byla tato výjimka vyhozena a případně další informace o vzniklé chybě. + +\section{Vlákna a synchronizace - Java} + +\subsection{Vlákna (Threads)} +Vlákna umožňují souběžné vykonávání více úkolů najednou, vytváří se buď extendováním třídy \textsf{Thread} nebo implementací rozhraní \textsf{Runnable}. Hlavní je metoda \textbf{run()} obsahující kód, který vlákno vykonává. Jeden proces může mít více vláken, která sdílí společný adresní prostor, ale všechny mají vlastní zásobník a lokální proměnné. Každé vlákno má: ID, jméno, prioritu, thread group, uncaught exception handler, deamon flag, class loader, interrupted flag, status. + +\subsection{Synchronizace} +Při práci s více vlákny je často nutná jejich synchronizace a umožnění bezpečného přístupu ke sdíleným prostředkům. K tomu existuje několik technik. +\begin{itemize} +\item \textbf{Synchronized} - S každým objektem je asociován tzv. \emph{monitor}, který umožňuje synchronizaci vláken nad tímto objektem použitím bloku \textbf{synchronized}. Pro vstup do tohoto bloku je nutné aby příslušné vlákno vlastnilo tento monitor, v jednu chvíli ale může monitor vlastnit pouze jedno vlákno. Pokud není monitor pro vlákno dostupný, jeho běh je zastaven dokud se monitor neuvolní. Pro synchronizaci celé metody je možné použít klíčové slovo \textbf{synchronized}. + +\item \textbf{Reentrant Locks} - Obdoba předchozí synchronizační techniky s manuálním získáváním a uvolňováním zámků - metody: \textbf{lock()}, \textbf{unlock()}, \textbf{tryLock()}. Zámky je nutné manuálně vytvářet jako objekty \textsf{ReentrantLock}, zámky je možné vytvořit \emph{fair}, tj. první čekající vlákno bude první kdo získá zámek. Používání Reentrant zámků je v praxi efektivnější než použití synchronized, ale zámky jsou běžné objekty na haldě. +\begin{verbatim} +lock.lock(); +try { + // do some staff ... +} finally { + lock.unlock() +} +\end{verbatim} + +\item \textbf{Volatile proměnné} - Jsou obyčejné proměnné, které ale mají zaručen atomický read/write přístup. Tyto proměnné nejsou nikdy uloženy lokálně pro jednotlivá vlákna, ale je vždy přistupováno přímo do hlavní paměti. Nevhodné pro \emph{read-update-write} operace. Použití pomocí klíčového slova \textbf{volatile}. + +\item \textbf{Atomické proměnné} - Umožňují atomický read/write přístup i \emph{read-update-write} operace. Používají se speciální atomické instrukce procesoru - \textbf{CMPXCHG} (compare and exchange) nebo \textbf{CAS} (compare and swap). Pro základní datové typy existují \textsf{AtomicBoolean}, \textsf{AtomicInteger}, \textsf{AtomicLong} a \textsf{AtomicReference} s operacemi \textbf{get()}, \textbf{set()}, \textbf{compareAndSet()}, \textbf{addAndGet()}, \textbf{incrementAndGet()}, \textbf{decrementAndGet()}. + +\item \textbf{Neblokující algoritmy} - Synchronizační algoritmy, které nepoužívají zámky ani čekání vláken, ale jsou postavené na atomických CAS operacích. Princip je, že se v nekonečné smyčce kontroluje stav atomické proměnné, dokud není možné bezpečně pokračovat dále. Tento princip výkonnostně převyšuje blokující algoritmy protože většina CAS operací uspěje na první pokus. Další výhodou je, že odstraňuje nadbytečné uspávání vláken a přepínání kontextu. +\end{itemize} + +\section{Návrhové vzory pro objektové programování} +\begin{itemize} +\item \textbf{Immutable object} - objekt, který po dobu svého života nemění žádné své vlastnosti, all fields are final, no setters +\item \textbf{Factory method, Abstract factory} - k vytváření objektů se používají speciální metody či tovární třídy +\item \textbf{Lazy initialization} - k výpočtům, inicializacím objektů a dalších dat dochází až v případě prvního použití +\item \textbf{Singleton} - pro danou třídu existuje pouze jedna instance v rámci celé aplikace +\item \textbf{Multiton} - pro danou třídu existuje několik instancí s různými parametry v rámci celé aplikace +\item \textbf{Strategy} - definice společného rozhraní pro skupinu podobných algoritmů, umožňuje zaměňovat různé implementace +\item \textbf{Composite} - skládání objektů do stromových struktur, ke skupině objektů je přistupováno jako k jediné instanci (Nodes and Leafs) +\item \textbf{Iterator} - umožňuje sekvenční procházení kolekce po jednotlivých prvcích bez odhalení vnitřní struktury této kolekce +\item \textbf{Command} - zastřešuje veškeré informace potřebné pro volání metod později - client, invoker, receiver +\end{itemize} + +\end{document} diff --git a/Softwarove systemy/08/08.lyx b/Softwarove systemy/08/08.lyx index 6906d28..bca4cfb 100644 --- a/Softwarove systemy/08/08.lyx +++ b/Softwarove systemy/08/08.lyx @@ -1,565 +1,565 @@ -#LyX 2.0 created this file. For more info see http://www.lyx.org/ -\lyxformat 413 -\begin_document -\begin_header -\textclass scrreprt -\begin_preamble - - -\usepackage[english,czech]{babel} -\end_preamble -\use_default_options false -\maintain_unincluded_children false -\language czech -\language_package default -\inputencoding auto -\fontencoding default -\font_roman default -\font_sans default -\font_typewriter default -\font_default_family default -\use_non_tex_fonts false -\font_sc false -\font_osf false -\font_sf_scale 100 -\font_tt_scale 100 - -\graphics default -\default_output_format default -\output_sync 0 -\bibtex_command default -\index_command default -\paperfontsize default -\spacing single -\use_hyperref false -\papersize default -\use_geometry false -\use_amsmath 1 -\use_esint 1 -\use_mhchem 0 -\use_mathdots 0 -\cite_engine basic -\use_bibtopic false -\use_indices false -\paperorientation portrait -\suppress_date false -\use_refstyle 0 -\index Index -\shortcut idx -\color #008000 -\end_index -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\paragraph_indentation default -\quotes_language german -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\html_math_output 0 -\html_css_as_file 0 -\html_be_strict false -\end_header - -\begin_body - -\begin_layout Standard -\begin_inset ERT -status collapsed - -\begin_layout Plain Layout - - -\backslash -setcounter{chapter}{7} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Chapter -Architektury softwarových systémů, komponentové architektury, vzdálená invokace, - distribuované komponentové architektury (CORBA), redundance a návrh spolehlivýc -h systémů. - (A4B77ASS) -\end_layout - -\begin_layout Section -Nefunkční požadavky softwarových systémů -\end_layout - -\begin_layout Standard -Specifikace -\series bold -ISO/IEC 9126 -\series default -: -\end_layout - -\begin_layout Itemize - -\series bold -Functionality -\series default - – existence of a set of functions and their specified properties -\end_layout - -\begin_layout Itemize - -\series bold -Reliability -\series default - - capability of software to -\emph on -maintain -\emph default - its level of performance under stated conditions for a stated period of - time -\end_layout - -\begin_layout Itemize - -\series bold -Usability -\series default - - effort needed for use -\end_layout - -\begin_layout Itemize - -\series bold -Efficiency -\series default - - relationship between the -\emph on -level of performance -\emph default - of the software and the amount of -\emph on -resources -\emph default - used, under stated conditions -\end_layout - -\begin_layout Itemize - -\series bold -Maintainability -\series default - - effort needed to -\emph on -make specified modifications -\emph default - -\end_layout - -\begin_layout Itemize - -\series bold -Portability -\series default - - transferred from one -\emph on -environment -\emph default - to another -\end_layout - -\begin_layout Standard -\align center -\begin_inset Graphics - filename img/iso.png - width 100line% - -\end_inset - - -\end_layout - -\begin_layout Section -Návrhové vzory pro distribuované systémy -\end_layout - -\begin_layout Itemize - -\series bold -Façade -\series default - - zakrývá komplexitu a heterogenitu systému či knihovny za jednoduché rozhraní, - často zakrývá více objektů -\end_layout - -\begin_layout Itemize - -\series bold -Adapter/Wrapper -\series default - - poskytuje mapování mezi dvěma rozhraními se stejnou funkcionalitou, zaručuje - kompatibilitu volání -\end_layout - -\begin_layout Itemize - -\series bold -Wrapper Façade -\series default - - zapouzdřuje funkce a data poskytované ne-objektově orientovaným API pod - objektově orientované rozhraní -\end_layout - -\begin_layout Itemize - -\series bold -Proxy -\series default - - je lokální reprezentace vzdálených objektů, rozhraní nebo knihoven -\end_layout - -\begin_layout Itemize - -\series bold -Active Object -\series default - - odděluje spouštění metody od její invokace, tím zlepšuje souběžnost a - zjednodušuje synchronní přístup k objektům -\end_layout - -\begin_layout Itemize - -\series bold -Reactor -\series default - - umožňuje událostmi řízeným aplikacím zpracovávání požadavků od jednoho - či více klientů -\end_layout - -\begin_layout Itemize - -\series bold -Proactor -\series default - - umožňuje událostmi řízeným aplikacím zpracovávání požadavků, které jsou - vyvolány dokončením asynchronních operací -\end_layout - -\begin_layout Itemize - -\series bold -HalfSync/HalfAsync -\series default - - odděluje synchronní a asynchronní zpracovávání v souběžných systémech - -\end_layout - -\begin_layout Section -Vzdálená invokace - RMI -\end_layout - -\begin_layout Standard -RMI (Remote Method Invocation) je způsob používání vzdálených objektů jako - lokálních, dostupné jen pro Javu. - Architektura klient-server: server vytvoří vzdálené objekty, klient tyto - objekty získá a může na nich volat metody. - Umožňuje načítat definice tříd za běhu. -\end_layout - -\begin_layout Standard -Vzdálené objekty je možné předat jiné (klientské) VM pomocí reference, poté - je na nich možné volat metody. - Výpočet pak probíhá na VM serveru. - Vzdálené objekty musí extendovat rozhraní -\family sans -Remote -\family default - a všechny metody musí vyhazovat -\family sans -RemoteException -\family default -. - Rozhraní -\family sans -Task -\family default - společné pro klienta i server definuje jejich vzájemnou komunikaci. - Takto může server vykonávat jakékoliv úkoly, které implementují rozhraní - -\family sans -Task -\family default -, RMI pak za běhu načte definice tříd. - Data přesouvané mezi klientem a servem musí být buď primitivní datové typy - nebo objekty implementující -\family sans -Serializable -\family default - nebo -\family sans -Remote -\family default -. - -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -begin{verbatim}public interface Task { -\end_layout - -\begin_layout Plain Layout - - T execute(); -\end_layout - -\begin_layout Plain Layout - -} -\end_layout - -\begin_layout Plain Layout - -\end_layout - -\begin_layout Plain Layout - -public interface Compute extends Remote { -\end_layout - -\begin_layout Plain Layout - - T perform(Task t) throws RemoteException; -\end_layout - -\begin_layout Plain Layout - -} -\backslash -end{verbatim} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Section -Distribuované komponenty - CORBA -\end_layout - -\begin_layout Standard -CORBA (Common Object Request Broker Architecture) je platformně a jazykově - nezávislý standard (architektura) pro distribuované výpočty. - Umožňuje transparentní invokaci objektů a metod přes síť. -\end_layout - -\begin_layout Standard - -\series bold -ORB -\series default - (Object Request Broker) přenáší žádosti od klienta na server a volá metody - na vzdálených objektech, potom co server žádost zpracuje, tak ORB přenese - odpověď zpět ke klientovi. - Klient pak volá metody na lokální proxy. - Pro komunikaci mezi jednotlivými ORB a pro přenos dat se používá -\series bold -IIOP -\series default - (Internet Inter-ORB Protocol). -\end_layout - -\begin_layout Standard - -\series bold -IDL -\series default - (Interface Definition Language) je platformně a jazykově nezávislý objektově - orientovaný jazyk určený ke specifikaci business level služeb a objektů. - Používá se pro popis dostupných lokálních a serverových metod. -\end_layout - -\begin_layout Standard -\align center -\begin_inset Graphics - filename img/corba.png - scale 50 - -\end_inset - - -\end_layout - -\begin_layout Standard -\align center -\begin_inset Graphics - filename img/orb.png - scale 90 - -\end_inset - - -\end_layout - -\begin_layout Section -Masivně distribuované architektury -\end_layout - -\begin_layout Subsection -Map-Reduce -\end_layout - -\begin_layout Standard -Navržen a používán Googlem, masivně paralelní přístup založený a inspirovaný - na funkcionálním programování. - Používá se k ukládání, manipulaci a hledání v datech s jednoduchou strukturou, - kterých je ale velké množství. - Operuje nad dvojicemi klíč-hodnota. - Metoda Map-Reduce má dvě opakující se fáze: -\end_layout - -\begin_layout Itemize - -\series bold -1) -\series default - -\series bold -Map -\series default - - funkce (filtr) se aplikuje na množinu záznamů/elementů v listu -\end_layout - -\begin_layout Itemize - -\series bold -2) -\series default - -\series bold -Reduce -\series default - - zkrácení listu za použití nějaké agregační funkce -\end_layout - -\begin_layout Standard -Z výpočetních jednotek je vybrán jeden řídící -\emph on -master node -\emph default - a ostatní jsou -\emph on -worker nodes -\emph default -. - Masivní paralelizace je dosažena tím, že se data rozdělí do několika částí - a nechají se zpracovat různým -\emph on -worker nodes -\emph default -. - Příklady použití: distribuované zpracování regulárních výrazu, počítání - URL referencí, vytváření reverzního grafu webu, sémantické vyhledávání, - invertovaní indexování, distribuované řazení. -\end_layout - -\begin_layout Standard -\align center -\begin_inset Graphics - filename img/map_reduce.png - width 100line% - -\end_inset - - -\end_layout - -\begin_layout Subsection -KaZaA -\end_layout - -\begin_layout Standard -Je skupina protokolů a technologií používaných pro -\emph on -peer-to-peer -\emph default - komunikaci. - -\end_layout - -\begin_layout Itemize - -\series bold -Napster -\series default - - -\emph on -peer-to-peer -\emph default - síť s centralizovaným řídícím prvkem -\end_layout - -\begin_layout Itemize - -\series bold -Gnutella -\series default - - Je -\emph on -flat peer-to-peer -\emph default - síť kde jsou si všichni peery rovni. - Při startu se vytvoří daný počet náhodných spojení s peery, které jsou - v tu dobu aktivní. - Peery sdílí informace o ostatních peerech. - V novějších verzích představen koncept -\emph on -ultrapeerů -\emph default - (peery s větším množstvím spojení, huby) - design ovlivněný -\emph on -scale-free -\emph default - sítěmi. - -\end_layout - -\begin_layout Paragraph* -Scale-Free Networks -\end_layout - -\begin_layout Standard -Sítě reflektující povahu reálného světa. - Existují dva typy nodů - -\emph on -Ordinary Nodes -\emph default - a -\emph on -Super Nodes -\emph default -. - Při startu se ON připojí k některému z dostupných SN. - Každý SN si udržuje databázi připojených ON a aktuální topologii dalších - SN. - Při hledání se ON spojí s SN, ale jsou možné spojení přímo ON k ON (Skype). -\end_layout - -\begin_layout Standard -\align center -\begin_inset Graphics - filename img/networks.jpg - width 100line% - -\end_inset - - -\end_layout - -\end_body -\end_document +#LyX 2.0 created this file. For more info see http://www.lyx.org/ +\lyxformat 413 +\begin_document +\begin_header +\textclass scrreprt +\begin_preamble + + +\usepackage[english,czech]{babel} +\end_preamble +\use_default_options false +\maintain_unincluded_children false +\language czech +\language_package default +\inputencoding auto +\fontencoding default +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 + +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_amsmath 1 +\use_esint 1 +\use_mhchem 0 +\use_mathdots 0 +\cite_engine basic +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\use_refstyle 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\quotes_language german +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +\begin_inset ERT +status collapsed + +\begin_layout Plain Layout + + +\backslash +setcounter{chapter}{7} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Chapter +Architektury softwarových systémů, komponentové architektury, vzdálená invokace, + distribuované komponentové architektury (CORBA), redundance a návrh spolehlivýc +h systémů. + (A4B77ASS) +\end_layout + +\begin_layout Section +Nefunkční požadavky softwarových systémů +\end_layout + +\begin_layout Standard +Specifikace +\series bold +ISO/IEC 9126 +\series default +: +\end_layout + +\begin_layout Itemize + +\series bold +Functionality +\series default + – existence of a set of functions and their specified properties +\end_layout + +\begin_layout Itemize + +\series bold +Reliability +\series default + - capability of software to +\emph on +maintain +\emph default + its level of performance under stated conditions for a stated period of + time +\end_layout + +\begin_layout Itemize + +\series bold +Usability +\series default + - effort needed for use +\end_layout + +\begin_layout Itemize + +\series bold +Efficiency +\series default + - relationship between the +\emph on +level of performance +\emph default + of the software and the amount of +\emph on +resources +\emph default + used, under stated conditions +\end_layout + +\begin_layout Itemize + +\series bold +Maintainability +\series default + - effort needed to +\emph on +make specified modifications +\emph default + +\end_layout + +\begin_layout Itemize + +\series bold +Portability +\series default + - transferred from one +\emph on +environment +\emph default + to another +\end_layout + +\begin_layout Standard +\align center +\begin_inset Graphics + filename img/iso.png + width 100line% + +\end_inset + + +\end_layout + +\begin_layout Section +Návrhové vzory pro distribuované systémy +\end_layout + +\begin_layout Itemize + +\series bold +Façade +\series default + - zakrývá komplexitu a heterogenitu systému či knihovny za jednoduché rozhraní, + často zakrývá více objektů +\end_layout + +\begin_layout Itemize + +\series bold +Adapter/Wrapper +\series default + - poskytuje mapování mezi dvěma rozhraními se stejnou funkcionalitou, zaručuje + kompatibilitu volání +\end_layout + +\begin_layout Itemize + +\series bold +Wrapper Façade +\series default + - zapouzdřuje funkce a data poskytované ne-objektově orientovaným API pod + objektově orientované rozhraní +\end_layout + +\begin_layout Itemize + +\series bold +Proxy +\series default + - je lokální reprezentace vzdálených objektů, rozhraní nebo knihoven +\end_layout + +\begin_layout Itemize + +\series bold +Active Object +\series default + - odděluje spouštění metody od její invokace, tím zlepšuje souběžnost a + zjednodušuje synchronní přístup k objektům +\end_layout + +\begin_layout Itemize + +\series bold +Reactor +\series default + - umožňuje událostmi řízeným aplikacím zpracovávání požadavků od jednoho + či více klientů +\end_layout + +\begin_layout Itemize + +\series bold +Proactor +\series default + - umožňuje událostmi řízeným aplikacím zpracovávání požadavků, které jsou + vyvolány dokončením asynchronních operací +\end_layout + +\begin_layout Itemize + +\series bold +HalfSync/HalfAsync +\series default + - odděluje synchronní a asynchronní zpracovávání v souběžných systémech + +\end_layout + +\begin_layout Section +Vzdálená invokace - RMI +\end_layout + +\begin_layout Standard +RMI (Remote Method Invocation) je způsob používání vzdálených objektů jako + lokálních, dostupné jen pro Javu. + Architektura klient-server: server vytvoří vzdálené objekty, klient tyto + objekty získá a může na nich volat metody. + Umožňuje načítat definice tříd za běhu. +\end_layout + +\begin_layout Standard +Vzdálené objekty je možné předat jiné (klientské) VM pomocí reference, poté + je na nich možné volat metody. + Výpočet pak probíhá na VM serveru. + Vzdálené objekty musí extendovat rozhraní +\family sans +Remote +\family default + a všechny metody musí vyhazovat +\family sans +RemoteException +\family default +. + Rozhraní +\family sans +Task +\family default + společné pro klienta i server definuje jejich vzájemnou komunikaci. + Takto může server vykonávat jakékoliv úkoly, které implementují rozhraní + +\family sans +Task +\family default +, RMI pak za běhu načte definice tříd. + Data přesouvané mezi klientem a servem musí být buď primitivní datové typy + nebo objekty implementující +\family sans +Serializable +\family default + nebo +\family sans +Remote +\family default +. + +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +begin{verbatim}public interface Task { +\end_layout + +\begin_layout Plain Layout + + T execute(); +\end_layout + +\begin_layout Plain Layout + +} +\end_layout + +\begin_layout Plain Layout + +\end_layout + +\begin_layout Plain Layout + +public interface Compute extends Remote { +\end_layout + +\begin_layout Plain Layout + + T perform(Task t) throws RemoteException; +\end_layout + +\begin_layout Plain Layout + +} +\backslash +end{verbatim} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Section +Distribuované komponenty - CORBA +\end_layout + +\begin_layout Standard +CORBA (Common Object Request Broker Architecture) je platformně a jazykově + nezávislý standard (architektura) pro distribuované výpočty. + Umožňuje transparentní invokaci objektů a metod přes síť. +\end_layout + +\begin_layout Standard + +\series bold +ORB +\series default + (Object Request Broker) přenáší žádosti od klienta na server a volá metody + na vzdálených objektech, potom co server žádost zpracuje, tak ORB přenese + odpověď zpět ke klientovi. + Klient pak volá metody na lokální proxy. + Pro komunikaci mezi jednotlivými ORB a pro přenos dat se používá +\series bold +IIOP +\series default + (Internet Inter-ORB Protocol). +\end_layout + +\begin_layout Standard + +\series bold +IDL +\series default + (Interface Definition Language) je platformně a jazykově nezávislý objektově + orientovaný jazyk určený ke specifikaci business level služeb a objektů. + Používá se pro popis dostupných lokálních a serverových metod. +\end_layout + +\begin_layout Standard +\align center +\begin_inset Graphics + filename img/corba.png + scale 50 + +\end_inset + + +\end_layout + +\begin_layout Standard +\align center +\begin_inset Graphics + filename img/orb.png + scale 90 + +\end_inset + + +\end_layout + +\begin_layout Section +Masivně distribuované architektury +\end_layout + +\begin_layout Subsection +Map-Reduce +\end_layout + +\begin_layout Standard +Navržen a používán Googlem, masivně paralelní přístup založený a inspirovaný + na funkcionálním programování. + Používá se k ukládání, manipulaci a hledání v datech s jednoduchou strukturou, + kterých je ale velké množství. + Operuje nad dvojicemi klíč-hodnota. + Metoda Map-Reduce má dvě opakující se fáze: +\end_layout + +\begin_layout Itemize + +\series bold +1) +\series default + +\series bold +Map +\series default + - funkce (filtr) se aplikuje na množinu záznamů/elementů v listu +\end_layout + +\begin_layout Itemize + +\series bold +2) +\series default + +\series bold +Reduce +\series default + - zkrácení listu za použití nějaké agregační funkce +\end_layout + +\begin_layout Standard +Z výpočetních jednotek je vybrán jeden řídící +\emph on +master node +\emph default + a ostatní jsou +\emph on +worker nodes +\emph default +. + Masivní paralelizace je dosažena tím, že se data rozdělí do několika částí + a nechají se zpracovat různým +\emph on +worker nodes +\emph default +. + Příklady použití: distribuované zpracování regulárních výrazu, počítání + URL referencí, vytváření reverzního grafu webu, sémantické vyhledávání, + invertovaní indexování, distribuované řazení. +\end_layout + +\begin_layout Standard +\align center +\begin_inset Graphics + filename img/map_reduce.png + width 100line% + +\end_inset + + +\end_layout + +\begin_layout Subsection +KaZaA +\end_layout + +\begin_layout Standard +Je skupina protokolů a technologií používaných pro +\emph on +peer-to-peer +\emph default + komunikaci. + +\end_layout + +\begin_layout Itemize + +\series bold +Napster +\series default + - +\emph on +peer-to-peer +\emph default + síť s centralizovaným řídícím prvkem +\end_layout + +\begin_layout Itemize + +\series bold +Gnutella +\series default + - Je +\emph on +flat peer-to-peer +\emph default + síť kde jsou si všichni peery rovni. + Při startu se vytvoří daný počet náhodných spojení s peery, které jsou + v tu dobu aktivní. + Peery sdílí informace o ostatních peerech. + V novějších verzích představen koncept +\emph on +ultrapeerů +\emph default + (peery s větším množstvím spojení, huby) - design ovlivněný +\emph on +scale-free +\emph default + sítěmi. + +\end_layout + +\begin_layout Paragraph* +Scale-Free Networks +\end_layout + +\begin_layout Standard +Sítě reflektující povahu reálného světa. + Existují dva typy nodů - +\emph on +Ordinary Nodes +\emph default + a +\emph on +Super Nodes +\emph default +. + Při startu se ON připojí k některému z dostupných SN. + Každý SN si udržuje databázi připojených ON a aktuální topologii dalších + SN. + Při hledání se ON spojí s SN, ale jsou možné spojení přímo ON k ON (Skype). +\end_layout + +\begin_layout Standard +\align center +\begin_inset Graphics + filename img/networks.jpg + width 100line% + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/Softwarove systemy/08/08.tex b/Softwarove systemy/08/08.tex index f76561c..7368b87 100644 --- a/Softwarove systemy/08/08.tex +++ b/Softwarove systemy/08/08.tex @@ -1,94 +1,94 @@ -\documentclass{scrreprt} - -\usepackage[english,czech]{babel} -\usepackage[utf8]{inputenc} -\usepackage{graphicx} - -\begin{document} - -\setcounter{chapter}{7} -\chapter{Architektury softwarových systémů, komponentové architektury, vzdálená invokace, distribuované komponentové architektury (CORBA), redundance a návrh spolehlivých systémů. (A4B77ASS)} - -\section{Nefunkční požadavky softwarových systémů} -Specifikace \textbf{ISO/IEC 9126}: -\begin{itemize} -\item \textbf{Functionality} – existence of a set of functions and their specified properties -\item \textbf{Reliability} - capability of software to \emph{maintain} its level of performance under stated conditions for a stated period of time -\item \textbf{Usability} - effort needed for use -\item \textbf{Efficiency} - relationship between the \emph{level of performance} of the software and the amount of \emph{resources} used, under stated conditions -\item \textbf{Maintainability} - effort needed to \emph{make specified modifications} -\item \textbf{Portability} - transferred from one \emph{environment} to another -\end{itemize} - -\begin{center} -\includegraphics[width=\linewidth]{img/iso} -\end{center} - -\section{Návrhové vzory pro distribuované systémy} -\begin{itemize} -\item \textbf{Façade} - zakrývá komplexitu a heterogenitu systému či knihovny za jednoduché rozhraní, často zakrývá více objektů -\item \textbf{Adapter/Wrapper} - poskytuje mapování mezi dvěma rozhraními se stejnou funkcionalitou, zaručuje kompatibilitu volání -\item \textbf{Wrapper Façade} - zapouzdřuje funkce a data poskytované ne-objektově orientovaným API pod objektově orientované rozhraní -\item \textbf{Proxy} - je lokální reprezentace vzdálených objektů, rozhraní nebo knihoven -\item \textbf{Active Object} - odděluje spouštění metody od její invokace, tím zlepšuje souběžnost a zjednodušuje synchronní přístup k objektům -\item \textbf{Reactor} - umožňuje událostmi řízeným aplikacím zpracovávání požadavků od jednoho či více klientů -\item \textbf{Proactor} - umožňuje událostmi řízeným aplikacím zpracovávání požadavků, které jsou vyvolány dokončením asynchronních operací -\item \textbf{HalfSync/HalfAsync} - odděluje synchronní a asynchronní zpracovávání v souběžných systémech -\end{itemize} - -\section{Vzdálená invokace - RMI} -RMI (Remote Method Invocation) je způsob používání vzdálených objektů jako lokálních, dostupné jen pro Javu. Architektura klient-server: server vytvoří vzdálené objekty, klient tyto objekty získá a může na nich volat metody. Umožňuje načítat definice tříd za běhu. - -Vzdálené objekty je možné předat jiné (klientské) VM pomocí reference, poté je na nich možné volat metody. Výpočet pak probíhá na VM serveru. Vzdálené objekty musí extendovat rozhraní \textsf{Remote} a všechny metody musí vyhazovat \textsf{RemoteException}. Rozhraní \textsf{Task} společné pro klienta i server definuje jejich vzájemnou komunikaci. Takto může server vykonávat jakékoliv úkoly, které implementují rozhraní \textsf{Task}, RMI pak za běhu načte definice tříd. Data přesouvané mezi klientem a servem musí být buď primitivní datové typy nebo objekty implementující \textsf{Serializable} nebo \textsf{Remote}. -\begin{verbatim} -public interface Task { - T execute(); -} - -public interface Compute extends Remote { - T perform(Task t) throws RemoteException; -} -\end{verbatim} - -\section{Distribuované komponenty - CORBA} -CORBA (Common Object Request Broker Architecture) je platformně a jazykově nezávislý standard (architektura) pro distribuované výpočty. Umožňuje transparentní invokaci objektů a metod přes síť. - -\textbf{ORB} (Object Request Broker) přenáší žádosti od klienta na server a volá metody na vzdálených objektech, potom co server žádost zpracuje, tak ORB přenese odpověď zpět ke klientovi. Klient pak volá metody na lokální proxy. Pro komunikaci mezi jednotlivými ORB a pro přenos dat se používá \textbf{IIOP} (Internet Inter-ORB Protocol). - -\textbf{IDL} (Interface Definition Language) je platformně a jazykově nezávislý objektově orientovaný jazyk určený ke specifikaci business level služeb a objektů. Používá se pro popis dostupných lokálních a serverových metod. - -\begin{center} -\includegraphics[scale=0.5]{img/corba} -\end{center} -\begin{center} -\includegraphics[scale=0.9]{img/orb} -\end{center} - -\section{Masivně distribuované architektury} - -\subsection{Map-Reduce} -Navržen a používán Googlem, masivně paralelní přístup založený a inspirovaný na funkcionálním programování. Používá se k ukládání, manipulaci a hledání v datech s jednoduchou strukturou, kterých je ale velké množství. Operuje nad dvojicemi klíč-hodnota. Metoda Map-Reduce má dvě opakující se fáze: -\begin{itemize} -\item[\textbf{1)}] \textbf{Map} - funkce (filtr) se aplikuje na množinu záznamů/elementů v listu -\item[\textbf{2)}] \textbf{Reduce} - zkrácení listu za použití nějaké agregační funkce -\end{itemize} -Z výpočetních jednotek je vybrán jeden řídící \emph{master node} a ostatní jsou \emph{worker nodes}. Masivní paralelizace je dosažena tím, že se data rozdělí do několika částí a nechají se zpracovat různým \emph{worker nodes}. Příklady použití: distribuované zpracování regulárních výrazu, počítání URL referencí, vytváření reverzního grafu webu, sémantické vyhledávání, invertovaní indexování, distribuované řazení. - -\begin{center} -\includegraphics[width=\linewidth]{img/map_reduce} -\end{center} - -\subsection{KaZaA} -Je skupina protokolů a technologií používaných pro \emph{peer-to-peer} komunikaci. -\begin{itemize} -\item \textbf{Napster} - \emph{peer-to-peer} síť s centralizovaným řídícím prvkem -\item \textbf{Gnutella} - Je \emph{flat peer-to-peer} síť kde jsou si všichni peery rovni. Při startu se vytvoří daný počet náhodných spojení s peery, které jsou v tu dobu aktivní. Peery sdílí informace o ostatních peerech. V novějších verzích představen koncept \emph{ultrapeerů} (peery s větším množstvím spojení, huby) - design ovlivněný \emph{scale-free} sítěmi. -\end{itemize} - -\paragraph*{Scale-Free Networks} Sítě reflektující povahu reálného světa. Existují dva typy nodů - \emph{Ordinary Nodes} a \emph{Super Nodes}. Při startu se ON připojí k některému z dostupných SN. Každý SN si udržuje databázi připojených ON a aktuální topologii dalších SN. Při hledání se ON spojí s SN, ale jsou možné spojení přímo ON k ON (Skype). - -\begin{center} -\includegraphics[width=\linewidth]{img/networks} -\end{center} - -\end{document} +\documentclass{scrreprt} + +\usepackage[english,czech]{babel} +\usepackage[utf8]{inputenc} +\usepackage{graphicx} + +\begin{document} + +\setcounter{chapter}{7} +\chapter{Architektury softwarových systémů, komponentové architektury, vzdálená invokace, distribuované komponentové architektury (CORBA), redundance a návrh spolehlivých systémů. (A4B77ASS)} + +\section{Nefunkční požadavky softwarových systémů} +Specifikace \textbf{ISO/IEC 9126}: +\begin{itemize} +\item \textbf{Functionality} – existence of a set of functions and their specified properties +\item \textbf{Reliability} - capability of software to \emph{maintain} its level of performance under stated conditions for a stated period of time +\item \textbf{Usability} - effort needed for use +\item \textbf{Efficiency} - relationship between the \emph{level of performance} of the software and the amount of \emph{resources} used, under stated conditions +\item \textbf{Maintainability} - effort needed to \emph{make specified modifications} +\item \textbf{Portability} - transferred from one \emph{environment} to another +\end{itemize} + +\begin{center} +\includegraphics[width=\linewidth]{img/iso} +\end{center} + +\section{Návrhové vzory pro distribuované systémy} +\begin{itemize} +\item \textbf{Façade} - zakrývá komplexitu a heterogenitu systému či knihovny za jednoduché rozhraní, často zakrývá více objektů +\item \textbf{Adapter/Wrapper} - poskytuje mapování mezi dvěma rozhraními se stejnou funkcionalitou, zaručuje kompatibilitu volání +\item \textbf{Wrapper Façade} - zapouzdřuje funkce a data poskytované ne-objektově orientovaným API pod objektově orientované rozhraní +\item \textbf{Proxy} - je lokální reprezentace vzdálených objektů, rozhraní nebo knihoven +\item \textbf{Active Object} - odděluje spouštění metody od její invokace, tím zlepšuje souběžnost a zjednodušuje synchronní přístup k objektům +\item \textbf{Reactor} - umožňuje událostmi řízeným aplikacím zpracovávání požadavků od jednoho či více klientů +\item \textbf{Proactor} - umožňuje událostmi řízeným aplikacím zpracovávání požadavků, které jsou vyvolány dokončením asynchronních operací +\item \textbf{HalfSync/HalfAsync} - odděluje synchronní a asynchronní zpracovávání v souběžných systémech +\end{itemize} + +\section{Vzdálená invokace - RMI} +RMI (Remote Method Invocation) je způsob používání vzdálených objektů jako lokálních, dostupné jen pro Javu. Architektura klient-server: server vytvoří vzdálené objekty, klient tyto objekty získá a může na nich volat metody. Umožňuje načítat definice tříd za běhu. + +Vzdálené objekty je možné předat jiné (klientské) VM pomocí reference, poté je na nich možné volat metody. Výpočet pak probíhá na VM serveru. Vzdálené objekty musí extendovat rozhraní \textsf{Remote} a všechny metody musí vyhazovat \textsf{RemoteException}. Rozhraní \textsf{Task} společné pro klienta i server definuje jejich vzájemnou komunikaci. Takto může server vykonávat jakékoliv úkoly, které implementují rozhraní \textsf{Task}, RMI pak za běhu načte definice tříd. Data přesouvané mezi klientem a servem musí být buď primitivní datové typy nebo objekty implementující \textsf{Serializable} nebo \textsf{Remote}. +\begin{verbatim} +public interface Task { + T execute(); +} + +public interface Compute extends Remote { + T perform(Task t) throws RemoteException; +} +\end{verbatim} + +\section{Distribuované komponenty - CORBA} +CORBA (Common Object Request Broker Architecture) je platformně a jazykově nezávislý standard (architektura) pro distribuované výpočty. Umožňuje transparentní invokaci objektů a metod přes síť. + +\textbf{ORB} (Object Request Broker) přenáší žádosti od klienta na server a volá metody na vzdálených objektech, potom co server žádost zpracuje, tak ORB přenese odpověď zpět ke klientovi. Klient pak volá metody na lokální proxy. Pro komunikaci mezi jednotlivými ORB a pro přenos dat se používá \textbf{IIOP} (Internet Inter-ORB Protocol). + +\textbf{IDL} (Interface Definition Language) je platformně a jazykově nezávislý objektově orientovaný jazyk určený ke specifikaci business level služeb a objektů. Používá se pro popis dostupných lokálních a serverových metod. + +\begin{center} +\includegraphics[scale=0.5]{img/corba} +\end{center} +\begin{center} +\includegraphics[scale=0.9]{img/orb} +\end{center} + +\section{Masivně distribuované architektury} + +\subsection{Map-Reduce} +Navržen a používán Googlem, masivně paralelní přístup založený a inspirovaný na funkcionálním programování. Používá se k ukládání, manipulaci a hledání v datech s jednoduchou strukturou, kterých je ale velké množství. Operuje nad dvojicemi klíč-hodnota. Metoda Map-Reduce má dvě opakující se fáze: +\begin{itemize} +\item[\textbf{1)}] \textbf{Map} - funkce (filtr) se aplikuje na množinu záznamů/elementů v listu +\item[\textbf{2)}] \textbf{Reduce} - zkrácení listu za použití nějaké agregační funkce +\end{itemize} +Z výpočetních jednotek je vybrán jeden řídící \emph{master node} a ostatní jsou \emph{worker nodes}. Masivní paralelizace je dosažena tím, že se data rozdělí do několika částí a nechají se zpracovat různým \emph{worker nodes}. Příklady použití: distribuované zpracování regulárních výrazu, počítání URL referencí, vytváření reverzního grafu webu, sémantické vyhledávání, invertovaní indexování, distribuované řazení. + +\begin{center} +\includegraphics[width=\linewidth]{img/map_reduce} +\end{center} + +\subsection{KaZaA} +Je skupina protokolů a technologií používaných pro \emph{peer-to-peer} komunikaci. +\begin{itemize} +\item \textbf{Napster} - \emph{peer-to-peer} síť s centralizovaným řídícím prvkem +\item \textbf{Gnutella} - Je \emph{flat peer-to-peer} síť kde jsou si všichni peery rovni. Při startu se vytvoří daný počet náhodných spojení s peery, které jsou v tu dobu aktivní. Peery sdílí informace o ostatních peerech. V novějších verzích představen koncept \emph{ultrapeerů} (peery s větším množstvím spojení, huby) - design ovlivněný \emph{scale-free} sítěmi. +\end{itemize} + +\paragraph*{Scale-Free Networks} Sítě reflektující povahu reálného světa. Existují dva typy nodů - \emph{Ordinary Nodes} a \emph{Super Nodes}. Při startu se ON připojí k některému z dostupných SN. Každý SN si udržuje databázi připojených ON a aktuální topologii dalších SN. Při hledání se ON spojí s SN, ale jsou možné spojení přímo ON k ON (Skype). + +\begin{center} +\includegraphics[width=\linewidth]{img/networks} +\end{center} + +\end{document} diff --git a/spolecna/18/18.lyx b/spolecna/18/18.lyx index c03677a..e3ba048 100644 --- a/spolecna/18/18.lyx +++ b/spolecna/18/18.lyx @@ -1,314 +1,314 @@ -#LyX 2.0 created this file. For more info see http://www.lyx.org/ -\lyxformat 413 -\begin_document -\begin_header -\textclass scrreprt -\use_default_options true -\maintain_unincluded_children false -\language czech -\language_package default -\inputencoding auto -\fontencoding global -\font_roman default -\font_sans default -\font_typewriter default -\font_default_family default -\use_non_tex_fonts false -\font_sc false -\font_osf false -\font_sf_scale 100 -\font_tt_scale 100 - -\graphics default -\default_output_format default -\output_sync 0 -\bibtex_command default -\index_command default -\paperfontsize default -\spacing single -\use_hyperref false -\papersize default -\use_geometry false -\use_amsmath 1 -\use_esint 1 -\use_mhchem 1 -\use_mathdots 1 -\cite_engine basic -\use_bibtopic false -\use_indices false -\paperorientation portrait -\suppress_date false -\use_refstyle 1 -\index Index -\shortcut idx -\color #008000 -\end_index -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\paragraph_indentation default -\quotes_language polish -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\html_math_output 0 -\html_css_as_file 0 -\html_be_strict false -\end_header - -\begin_body - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -setcounter{chapter}{17} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Chapter -Rekurze, základní schéma, základní vlastnosti, souvislost rekurze a iterace, - vlastnosti implementace, efektivita. - (A4B36ALG) -\end_layout - -\begin_layout Standard -7.června 2012, Václav Burda -\end_layout - -\begin_layout Standard - -\emph on -Co říci na začátek: -\end_layout - -\begin_layout Standard -Rekurze nám dáva možnost definice něčeho nekonečného konečným algoritmem. - Rekurzivní volání funkce je tedy takové volání, ke kterému dojde ve chvíli, - kdy funkce samotná ještě nedokončila svou činnost. -\end_layout - -\begin_layout Section -Základní schéma -\end_layout - -\begin_layout Enumerate -inicializační algoritmus - rekurzivní funkce většinou potřebuje nějakou - inicializační hodnotu, se kterou zahájí výpočet. - To většinou zajišťuje jiná funkce, která není rekurzivní a která danou - rekurzivní funkci volá a předává hodnotu, se kterou rekurzivní výpočet - začíná -\end_layout - -\begin_layout Enumerate -kontrola, zda vstupní parametr odpovídá stanoveným podmínkám. - Pokud hodnota parametru odpovídá, rekurzivní funkce provede výpočet a vrátí - hodnotu -\end_layout - -\begin_layout Enumerate -rekurzivní funkce redefinuje řešení problému tak, že jej nějakým způsobem - zmenší, zjednoduší nebo rozloží na dílčí podproblémy -\end_layout - -\begin_layout Enumerate -volání funkcí, které řeší daný podproblém - tady nastává přímé nebo nepřímé - volání sebe sama -\end_layout - -\begin_layout Enumerate -sestavení výsledku -\end_layout - -\begin_layout Enumerate -vrácení vypočtené hodnoty -\end_layout - -\begin_layout Section -Základní vlastnosti -\end_layout - -\begin_layout Standard -Dělení rekurze 1: -\end_layout - -\begin_layout Itemize -Lineární - v každé iteraci dojde k pouze jednomu zavolání sebe sama. -\end_layout - -\begin_layout Itemize -Stromová - v každé iteraci dochází k více dělení na podprogramy. -\end_layout - -\begin_layout Standard -Dělení rekuzre 2: -\end_layout - -\begin_layout Itemize -Přímá - v dáné rekurzivní funkci dojde k volání téže funkce. -\end_layout - -\begin_layout Itemize -Nepřímá - rekurzivní volání, ke kterému dochází přes další funkci (např. - A volá B a B volá A). -\end_layout - -\begin_layout Standard -Volání může probíhat přímo nebo nepřímo. - Každá rekurze se nechá přepsat na nerekurzivní tvar například pomocí zásobníku - (udržujeme si datovou strukturu, která nahrazuje implicitní hardwarový - zásobník použitý při rekurzivním volání). -\end_layout - -\begin_layout Section -Vlastnosti implementace -\end_layout - -\begin_layout Standard -Rekurzí lze dosáhnout zjednodušení řešené úlohy, ale je nutné brát v úvahu - následující úskalí: -\end_layout - -\begin_layout Itemize -Každé další volání rekurzívní funkce prohlubuje zapouzdření a tedy zabírá - paměťový prostor a procesorový čas. -\end_layout - -\begin_layout Itemize -V případě chybně ošetřeného ukončení rekurze dochází k vučerpání veškérých - volných prostředků a k havárii programu. -\end_layout - -\begin_layout Itemize -Použití může vést ke zvýšení složitosti výpočtu. -\end_layout - -\begin_layout Standard -Rekurze musí obsahovat: -\end_layout - -\begin_layout Itemize -Ukončovací podmínku. -\end_layout - -\begin_layout Itemize -V každém kroku rekurze musí dojít ke zjednodušení problému. -\end_layout - -\begin_layout Itemize -V algoritmu se nejprve musí ověřit, zda nenastala koncová situace. - Když ne, provede se rekurzivní krok. -\end_layout - -\begin_layout Section -Souvislost rekurze a iterace -\end_layout - -\begin_layout Standard -Příklad výpočtu Faktoriálu pomocí rekurze: -\end_layout - -\begin_layout LyX-Code -function Faktorial ( integer X ) -\end_layout - -\begin_layout LyX-Code - if X < 0 then return "Chybny argument" end if -\end_layout - -\begin_layout LyX-Code - if X = 0 then return 1 end if -\end_layout - -\begin_layout LyX-Code - return Faktorial(X-1) * X -\end_layout - -\begin_layout LyX-Code -end function -\end_layout - -\begin_layout Standard -a pomocí iterace: -\end_layout - -\begin_layout LyX-Code -function Faktorial (integer X) -\end_layout - -\begin_layout LyX-Code - integer nfact -\end_layout - -\begin_layout LyX-Code - if X < 0 then return "Chybny argument" end if -\end_layout - -\begin_layout LyX-Code - nfact = 1 -\end_layout - -\begin_layout LyX-Code - for i = 1 to X do -\end_layout - -\begin_layout LyX-Code - nfact = nfact * i -\end_layout - -\begin_layout LyX-Code - end for -\end_layout - -\begin_layout LyX-Code - return nfact -\end_layout - -\begin_layout LyX-Code -end function -\end_layout - -\begin_layout Section -Efektivita -\end_layout - -\begin_layout Standard -Hlavní nevýhodou rekurze je u stromové struktury několikanásobné počítání - stejných výpočtů (v případě Fibonacciho posloupnosti jde o exponenciální - složitost). - Tento nedostatek lze vyřešit zavedením tabulky (pole), do které ukládáme - již spočítané výsledky (ale potřebujeme další paměť pro tuto tabulku). -\end_layout - -\begin_layout Section -Zdroje -\end_layout - -\begin_layout Itemize -http://cs.wikipedia.org/wiki/Rekurze#Efektivita_rekurzivn.C3.ADch_algoritm.C5.AF -\end_layout - -\begin_layout Itemize -http://cs.wikipedia.org/wiki/Rekurzivní_funkce_(programování) -\end_layout - -\begin_layout Itemize -http://service.felk.cvut.cz/courses/Y36ALG/balik/Alg5Balik2008.pdf -\end_layout - -\begin_layout Itemize -http://www.algoritmy.net/article/23275/Rekurze-11 -\end_layout - -\end_body -\end_document +#LyX 2.0 created this file. For more info see http://www.lyx.org/ +\lyxformat 413 +\begin_document +\begin_header +\textclass scrreprt +\use_default_options true +\maintain_unincluded_children false +\language czech +\language_package default +\inputencoding auto +\fontencoding global +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 + +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_amsmath 1 +\use_esint 1 +\use_mhchem 1 +\use_mathdots 1 +\cite_engine basic +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\use_refstyle 1 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\quotes_language polish +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +setcounter{chapter}{17} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Chapter +Rekurze, základní schéma, základní vlastnosti, souvislost rekurze a iterace, + vlastnosti implementace, efektivita. + (A4B36ALG) +\end_layout + +\begin_layout Standard +7.června 2012, Václav Burda +\end_layout + +\begin_layout Standard + +\emph on +Co říci na začátek: +\end_layout + +\begin_layout Standard +Rekurze nám dáva možnost definice něčeho nekonečného konečným algoritmem. + Rekurzivní volání funkce je tedy takové volání, ke kterému dojde ve chvíli, + kdy funkce samotná ještě nedokončila svou činnost. +\end_layout + +\begin_layout Section +Základní schéma +\end_layout + +\begin_layout Enumerate +inicializační algoritmus - rekurzivní funkce většinou potřebuje nějakou + inicializační hodnotu, se kterou zahájí výpočet. + To většinou zajišťuje jiná funkce, která není rekurzivní a která danou + rekurzivní funkci volá a předává hodnotu, se kterou rekurzivní výpočet + začíná +\end_layout + +\begin_layout Enumerate +kontrola, zda vstupní parametr odpovídá stanoveným podmínkám. + Pokud hodnota parametru odpovídá, rekurzivní funkce provede výpočet a vrátí + hodnotu +\end_layout + +\begin_layout Enumerate +rekurzivní funkce redefinuje řešení problému tak, že jej nějakým způsobem + zmenší, zjednoduší nebo rozloží na dílčí podproblémy +\end_layout + +\begin_layout Enumerate +volání funkcí, které řeší daný podproblém - tady nastává přímé nebo nepřímé + volání sebe sama +\end_layout + +\begin_layout Enumerate +sestavení výsledku +\end_layout + +\begin_layout Enumerate +vrácení vypočtené hodnoty +\end_layout + +\begin_layout Section +Základní vlastnosti +\end_layout + +\begin_layout Standard +Dělení rekurze 1: +\end_layout + +\begin_layout Itemize +Lineární - v každé iteraci dojde k pouze jednomu zavolání sebe sama. +\end_layout + +\begin_layout Itemize +Stromová - v každé iteraci dochází k více dělení na podprogramy. +\end_layout + +\begin_layout Standard +Dělení rekuzre 2: +\end_layout + +\begin_layout Itemize +Přímá - v dáné rekurzivní funkci dojde k volání téže funkce. +\end_layout + +\begin_layout Itemize +Nepřímá - rekurzivní volání, ke kterému dochází přes další funkci (např. + A volá B a B volá A). +\end_layout + +\begin_layout Standard +Volání může probíhat přímo nebo nepřímo. + Každá rekurze se nechá přepsat na nerekurzivní tvar například pomocí zásobníku + (udržujeme si datovou strukturu, která nahrazuje implicitní hardwarový + zásobník použitý při rekurzivním volání). +\end_layout + +\begin_layout Section +Vlastnosti implementace +\end_layout + +\begin_layout Standard +Rekurzí lze dosáhnout zjednodušení řešené úlohy, ale je nutné brát v úvahu + následující úskalí: +\end_layout + +\begin_layout Itemize +Každé další volání rekurzívní funkce prohlubuje zapouzdření a tedy zabírá + paměťový prostor a procesorový čas. +\end_layout + +\begin_layout Itemize +V případě chybně ošetřeného ukončení rekurze dochází k vučerpání veškérých + volných prostředků a k havárii programu. +\end_layout + +\begin_layout Itemize +Použití může vést ke zvýšení složitosti výpočtu. +\end_layout + +\begin_layout Standard +Rekurze musí obsahovat: +\end_layout + +\begin_layout Itemize +Ukončovací podmínku. +\end_layout + +\begin_layout Itemize +V každém kroku rekurze musí dojít ke zjednodušení problému. +\end_layout + +\begin_layout Itemize +V algoritmu se nejprve musí ověřit, zda nenastala koncová situace. + Když ne, provede se rekurzivní krok. +\end_layout + +\begin_layout Section +Souvislost rekurze a iterace +\end_layout + +\begin_layout Standard +Příklad výpočtu Faktoriálu pomocí rekurze: +\end_layout + +\begin_layout LyX-Code +function Faktorial ( integer X ) +\end_layout + +\begin_layout LyX-Code + if X < 0 then return "Chybny argument" end if +\end_layout + +\begin_layout LyX-Code + if X = 0 then return 1 end if +\end_layout + +\begin_layout LyX-Code + return Faktorial(X-1) * X +\end_layout + +\begin_layout LyX-Code +end function +\end_layout + +\begin_layout Standard +a pomocí iterace: +\end_layout + +\begin_layout LyX-Code +function Faktorial (integer X) +\end_layout + +\begin_layout LyX-Code + integer nfact +\end_layout + +\begin_layout LyX-Code + if X < 0 then return "Chybny argument" end if +\end_layout + +\begin_layout LyX-Code + nfact = 1 +\end_layout + +\begin_layout LyX-Code + for i = 1 to X do +\end_layout + +\begin_layout LyX-Code + nfact = nfact * i +\end_layout + +\begin_layout LyX-Code + end for +\end_layout + +\begin_layout LyX-Code + return nfact +\end_layout + +\begin_layout LyX-Code +end function +\end_layout + +\begin_layout Section +Efektivita +\end_layout + +\begin_layout Standard +Hlavní nevýhodou rekurze je u stromové struktury několikanásobné počítání + stejných výpočtů (v případě Fibonacciho posloupnosti jde o exponenciální + složitost). + Tento nedostatek lze vyřešit zavedením tabulky (pole), do které ukládáme + již spočítané výsledky (ale potřebujeme další paměť pro tuto tabulku). +\end_layout + +\begin_layout Section +Zdroje +\end_layout + +\begin_layout Itemize +http://cs.wikipedia.org/wiki/Rekurze#Efektivita_rekurzivn.C3.ADch_algoritm.C5.AF +\end_layout + +\begin_layout Itemize +http://cs.wikipedia.org/wiki/Rekurzivní_funkce_(programování) +\end_layout + +\begin_layout Itemize +http://service.felk.cvut.cz/courses/Y36ALG/balik/Alg5Balik2008.pdf +\end_layout + +\begin_layout Itemize +http://www.algoritmy.net/article/23275/Rekurze-11 +\end_layout + +\end_body +\end_document diff --git a/spolecna/28/28.lyx b/spolecna/28/28.lyx index e9f2220..8a6215f 100644 --- a/spolecna/28/28.lyx +++ b/spolecna/28/28.lyx @@ -1,409 +1,409 @@ -#LyX 2.0 created this file. For more info see http://www.lyx.org/ -\lyxformat 413 -\begin_document -\begin_header -\textclass scrreprt -\use_default_options true -\maintain_unincluded_children false -\language english -\language_package default -\inputencoding auto -\fontencoding global -\font_roman default -\font_sans default -\font_typewriter default -\font_default_family default -\use_non_tex_fonts false -\font_sc false -\font_osf false -\font_sf_scale 100 -\font_tt_scale 100 - -\graphics default -\default_output_format default -\output_sync 0 -\bibtex_command default -\index_command default -\paperfontsize default -\spacing single -\use_hyperref false -\papersize default -\use_geometry false -\use_amsmath 1 -\use_esint 1 -\use_mhchem 1 -\use_mathdots 1 -\cite_engine basic -\use_bibtopic false -\use_indices false -\paperorientation portrait -\suppress_date false -\use_refstyle 1 -\index Index -\shortcut idx -\color #008000 -\end_index -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\paragraph_indentation default -\quotes_language english -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\html_math_output 0 -\html_css_as_file 0 -\html_be_strict false -\end_header - -\begin_body - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -setcounter{chapter}{27} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Chapter -Struktury a hierarchie pamětí. - Způsoby adresace. - Různá šíře adres generovaných CPU (logických adres) a fyzických adres paměti. - Mapování, stránkování, segmentace. - Přerušení a výjimky. - Zdroje přerušení, přerušovací vektory. - DMA přenosy. - (A0B35SPS) -\end_layout - -\begin_layout Standard -(pozn. - autora: V předmětu SPS toto není. - Čerpal jsem z přednášek OSS a APO.) -\end_layout - -\begin_layout Section -Struktury a hierarchie pamětí -\end_layout - -\begin_layout Itemize -Rychlé a malé paměti jsou umístěny blízko CPU. -\end_layout - -\begin_layout Itemize -Větší a pomalejší paměti js -\begin_inset Formula $ $ -\end_inset - -ou dále od CPU. -\end_layout - -\begin_layout Itemize -Princip cachování nejčastěji používaných dat v rychlých pamětech - zrychlení - přístupu k datům. -\end_layout - -\begin_layout Itemize -od nejrychlejší a nejmenší po největší a nejpomalejší: -\end_layout - -\begin_deeper -\begin_layout Itemize -on-chip L1 caches -\end_layout - -\begin_layout Itemize -off-chip L2 caches (SRAM) -\end_layout - -\begin_layout Itemize -hlavní paměť (DRAM) -\end_layout - -\begin_layout Itemize -vedlejší paměť (pevný disk) -\end_layout - -\end_deeper -\begin_layout Section -Způsoby adresace -\end_layout - -\begin_layout Standard -Máme 2 typy adres. - Logickou a fyzickou adresu. - Logická adresa je adresa, se kterou pracuje CPU. - Tato adresa je překládána na fyzickou adresu, což je konkrétní adresa v - dané paměti. - Výhody - CPU vidí unifikované adresy - pro přístup do hlavní paměti i k - IO zařízením. - Data v hlavní paměti nejsou poskládána tak jak jdou za sebou, mohou být - zpřeházena - optimalizace využití prostoru paměti a fragmentace. - Přes logickou adresu se nechá přistupovat k datům sekvenčně, tak jak jdou - za sebou. -\end_layout - -\begin_layout Standard -Velikost logického adresního prostoru je dána architekturou procesoru - - kolik adres je procesor schopen generovat. - Např. - 32 bitový procesor generuje -\begin_inset Formula $2^{32}$ -\end_inset - -adres. - Velikost fyyického adresního prostoru je dána nainstalovaným hardware počítače - - fyzicky dostupnou pamětí. -\end_layout - -\begin_layout Paragraph -Stránkování -\end_layout - -\begin_layout Standard -Souvislý LAP (Logický Adresní Prostor) není zobrazován jako jediná souvislá - oblat FAP. - FAP se dělí na úseky zvané rámce, LAP se dělí na úseky dané stránky. -\end_layout - -\begin_layout Paragraph -Struktura logické adresy -\end_layout - -\begin_layout Standard -Logická adresa se zkládá ze dvou částí. - První část je index v tabulce stránek - díky němu se v tabulce stránek - vyhledá fyzická adresa stránky. - Druhá část je offset - posunutí ve stránce. -\end_layout - -\begin_layout Paragraph -Převod logické adresy na fyzickou -\end_layout - -\begin_layout Itemize -K logické adrese je v tabulce stránek nalezena fyzická adresa dané stránky/rámce. -\end_layout - -\begin_layout Itemize -K adrese rámce je přičten offset a výsledek je požadovaná fyzická adresa. -\end_layout - -\begin_layout Section -Různá šíře logických a fyzických adres -\end_layout - -\begin_layout Standard -CPU může mít menší datovou sběrnici, než je šíře fyzické adresy. - Např. - fyzická adresa má 20 bitů, ale datová sběrnice CPU je jen 16 bitů. - Zbývající 4 bity jsou offset segmentu a jsou uloženy ve 4 segmentových - registrech CPU. - FA = (segment << 4)+offset. -\end_layout - -\begin_layout Standard -Opačný případ - CPU generuje více logických adres (např. - 64 bitový procesor generuje -\begin_inset Formula $2^{64}$ -\end_inset - -adres) než je fyzických adres (LA je větší než FA). - Tento problém se řeší virtualizací paměti. - Virtualizace zpočívá v tom, že FAP se rozšiřuje o úseky na vnější paměti - (např. - na pevném disku). - -\end_layout - -\begin_layout Section -Mapování, stránkování, segmentace -\end_layout - -\begin_layout Paragraph -Stránkování -\end_layout - -\begin_layout Standard -LAP je rozdělen do úseků, které na sebe navazují - stránky. - Logická adresa odkazuje na adresu stránky, která odkazuje na adresu rámce - FAP. - Rámce v FAP na sebe nemusí navazovat. -\end_layout - -\begin_layout Paragraph -Segmentace -\end_layout - -\begin_layout Standard -LAP je rozdělena na segmenty. - Segmenty jsou části programu - mají logický význam (hlavní program, procedura, - funkce,...), jsou různě dlouhé - nízká vnitřní fragmentace. - Výhody - lze určit přístup do nepovolené části paměti (segmentation fault), - se segmenty v paměti lze libovolně hýbat, lze nastavovat práva k přístupu - do segmentu. - Nevýhoda - externí fragmentace. -\end_layout - -\begin_layout Paragraph -Stránkování a segmentace najednou -\end_layout - -\begin_layout Standard -Výše uvedené metody lze kombinovat. - Segmentace vybírá části LAP, stránkování zobrazuje LAP do FAP - LAP je - dělena na segmenty, které jsou stránkovány. -\end_layout - -\begin_layout Section -Přerušení a výjimky -\end_layout - -\begin_layout Paragraph -Přerušení -\end_layout - -\begin_layout Itemize -cílem je zlepšení účinnosti systému -\end_layout - -\begin_layout Itemize -je potřeba provést jinou posloupnost příkazů jako reakci na nějakou „neobvyklou” - událost -\end_layout - -\begin_layout Itemize -přerušující událost způsobí, že se pozastaví běh procesu v CPU takovým způsobem, - aby ho bylo možné později znovu obnovit, aniž by to přerušený proces „poznal“ -\end_layout - -\begin_layout Itemize -využití např. - při IO operacích -\end_layout - -\begin_layout Itemize -testování, zda je voláno přerušení alespoň po dokončení každé instrukce -\end_layout - -\begin_layout Itemize -přerušení bývá často voláno programem -\end_layout - -\begin_layout Itemize -Maskovatelná, lze je zakazat v stavovem řídícím slovu CPU, případně řízení - priorit (periferie, čítače, časovače) -\end_layout - -\begin_layout Itemize -Nemaskovatelná - ošetření HW chyb, hlídací obvod (Watch Dog) -\end_layout - -\begin_layout Paragraph -Výjimka -\end_layout - -\begin_layout Itemize -Výjimka – ošetření zvláštních situací, které brání dalšímu vykonávání instrukcí - (exception) -\end_layout - -\begin_deeper -\begin_layout Itemize -Matematické přetečení (výsledek instrukce s kontrolou saturace přetekl) - -\end_layout - -\begin_layout Itemize -Načtena nedefinovaná instrukce (neznámý operační kód instrukce typu IR, - nebo neznámá funkce instrukce typu R) -\end_layout - -\begin_layout Itemize -Systémové volání (instrukce syscall) -\end_layout - -\end_deeper -\begin_layout Section* -Zdroje přerušení, přerušovací vektory -\end_layout - -\begin_layout Paragraph -Určení zdroje výjimky přerušení -\end_layout - -\begin_layout Standard -Softwarové vyhledání (polled exception handling) -\end_layout - -\begin_layout Itemize -Veškerá přerušení a výjimky spouštějí rutinu od stejné adresy – např. - standardní MIPS, adresa 0x00000004 -\end_layout - -\begin_layout Itemize -Rutina zjistí důvod ze stavového registru (MIPS: cause registr) -\end_layout - -\begin_layout Standard -Vektorová obsluha přerušení -\end_layout - -\begin_layout Itemize -Již hardware CPU zjistí příčinu/číslo zdroje -\end_layout - -\begin_layout Itemize -V paměti se nachází na pevné/řídicím registrem specifikované (VBR) adrese - tabulka vektorů přerušení -\end_layout - -\begin_layout Itemize -Procesor převede číslo zdroje na index do tabulky -\end_layout - -\begin_layout Itemize -Z daného indexu načte slovo a vloží ho do PC ● -\end_layout - -\begin_layout Standard -Nevektorová obsluha více pevně určených adres podle priorit/důvodu -\end_layout - -\begin_layout Itemize -Často jsou přístupy kombinované, např. - výjimky mají oddělené cílové adresy skoků, využívá tabulku atd. - ale veškerá vnější přerušení končí pouze na jednom z vektorů -\end_layout - -\begin_layout Section -DMA přenosy -\end_layout - -\begin_layout Standard -Direct Memory Access - přímý přístup do paměti. - Využívá se při přenosu velkého množství dat - data nemusí jít přes procesor - a nevytěsňují tak data z cache. -\end_layout - -\begin_layout Itemize -Program/OS nastaví parametry přenosu -\end_layout - -\begin_layout Itemize -Procesor nastaví adresy do DMA řadiče, ten na konci přenosu vyvolá přerušení -\end_layout - -\end_body -\end_document +#LyX 2.0 created this file. For more info see http://www.lyx.org/ +\lyxformat 413 +\begin_document +\begin_header +\textclass scrreprt +\use_default_options true +\maintain_unincluded_children false +\language english +\language_package default +\inputencoding auto +\fontencoding global +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 + +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_amsmath 1 +\use_esint 1 +\use_mhchem 1 +\use_mathdots 1 +\cite_engine basic +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\use_refstyle 1 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +\begin_inset ERT +status open + +\begin_layout Plain Layout + + +\backslash +setcounter{chapter}{27} +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Chapter +Struktury a hierarchie pamětí. + Způsoby adresace. + Různá šíře adres generovaných CPU (logických adres) a fyzických adres paměti. + Mapování, stránkování, segmentace. + Přerušení a výjimky. + Zdroje přerušení, přerušovací vektory. + DMA přenosy. + (A0B35SPS) +\end_layout + +\begin_layout Standard +(pozn. + autora: V předmětu SPS toto není. + Čerpal jsem z přednášek OSS a APO.) +\end_layout + +\begin_layout Section +Struktury a hierarchie pamětí +\end_layout + +\begin_layout Itemize +Rychlé a malé paměti jsou umístěny blízko CPU. +\end_layout + +\begin_layout Itemize +Větší a pomalejší paměti js +\begin_inset Formula $ $ +\end_inset + +ou dále od CPU. +\end_layout + +\begin_layout Itemize +Princip cachování nejčastěji používaných dat v rychlých pamětech - zrychlení + přístupu k datům. +\end_layout + +\begin_layout Itemize +od nejrychlejší a nejmenší po největší a nejpomalejší: +\end_layout + +\begin_deeper +\begin_layout Itemize +on-chip L1 caches +\end_layout + +\begin_layout Itemize +off-chip L2 caches (SRAM) +\end_layout + +\begin_layout Itemize +hlavní paměť (DRAM) +\end_layout + +\begin_layout Itemize +vedlejší paměť (pevný disk) +\end_layout + +\end_deeper +\begin_layout Section +Způsoby adresace +\end_layout + +\begin_layout Standard +Máme 2 typy adres. + Logickou a fyzickou adresu. + Logická adresa je adresa, se kterou pracuje CPU. + Tato adresa je překládána na fyzickou adresu, což je konkrétní adresa v + dané paměti. + Výhody - CPU vidí unifikované adresy - pro přístup do hlavní paměti i k + IO zařízením. + Data v hlavní paměti nejsou poskládána tak jak jdou za sebou, mohou být + zpřeházena - optimalizace využití prostoru paměti a fragmentace. + Přes logickou adresu se nechá přistupovat k datům sekvenčně, tak jak jdou + za sebou. +\end_layout + +\begin_layout Standard +Velikost logického adresního prostoru je dána architekturou procesoru - + kolik adres je procesor schopen generovat. + Např. + 32 bitový procesor generuje +\begin_inset Formula $2^{32}$ +\end_inset + +adres. + Velikost fyyického adresního prostoru je dána nainstalovaným hardware počítače + - fyzicky dostupnou pamětí. +\end_layout + +\begin_layout Paragraph +Stránkování +\end_layout + +\begin_layout Standard +Souvislý LAP (Logický Adresní Prostor) není zobrazován jako jediná souvislá + oblat FAP. + FAP se dělí na úseky zvané rámce, LAP se dělí na úseky dané stránky. +\end_layout + +\begin_layout Paragraph +Struktura logické adresy +\end_layout + +\begin_layout Standard +Logická adresa se zkládá ze dvou částí. + První část je index v tabulce stránek - díky němu se v tabulce stránek + vyhledá fyzická adresa stránky. + Druhá část je offset - posunutí ve stránce. +\end_layout + +\begin_layout Paragraph +Převod logické adresy na fyzickou +\end_layout + +\begin_layout Itemize +K logické adrese je v tabulce stránek nalezena fyzická adresa dané stránky/rámce. +\end_layout + +\begin_layout Itemize +K adrese rámce je přičten offset a výsledek je požadovaná fyzická adresa. +\end_layout + +\begin_layout Section +Různá šíře logických a fyzických adres +\end_layout + +\begin_layout Standard +CPU může mít menší datovou sběrnici, než je šíře fyzické adresy. + Např. + fyzická adresa má 20 bitů, ale datová sběrnice CPU je jen 16 bitů. + Zbývající 4 bity jsou offset segmentu a jsou uloženy ve 4 segmentových + registrech CPU. + FA = (segment << 4)+offset. +\end_layout + +\begin_layout Standard +Opačný případ - CPU generuje více logických adres (např. + 64 bitový procesor generuje +\begin_inset Formula $2^{64}$ +\end_inset + +adres) než je fyzických adres (LA je větší než FA). + Tento problém se řeší virtualizací paměti. + Virtualizace zpočívá v tom, že FAP se rozšiřuje o úseky na vnější paměti + (např. + na pevném disku). + +\end_layout + +\begin_layout Section +Mapování, stránkování, segmentace +\end_layout + +\begin_layout Paragraph +Stránkování +\end_layout + +\begin_layout Standard +LAP je rozdělen do úseků, které na sebe navazují - stránky. + Logická adresa odkazuje na adresu stránky, která odkazuje na adresu rámce + FAP. + Rámce v FAP na sebe nemusí navazovat. +\end_layout + +\begin_layout Paragraph +Segmentace +\end_layout + +\begin_layout Standard +LAP je rozdělena na segmenty. + Segmenty jsou části programu - mají logický význam (hlavní program, procedura, + funkce,...), jsou různě dlouhé - nízká vnitřní fragmentace. + Výhody - lze určit přístup do nepovolené části paměti (segmentation fault), + se segmenty v paměti lze libovolně hýbat, lze nastavovat práva k přístupu + do segmentu. + Nevýhoda - externí fragmentace. +\end_layout + +\begin_layout Paragraph +Stránkování a segmentace najednou +\end_layout + +\begin_layout Standard +Výše uvedené metody lze kombinovat. + Segmentace vybírá části LAP, stránkování zobrazuje LAP do FAP - LAP je + dělena na segmenty, které jsou stránkovány. +\end_layout + +\begin_layout Section +Přerušení a výjimky +\end_layout + +\begin_layout Paragraph +Přerušení +\end_layout + +\begin_layout Itemize +cílem je zlepšení účinnosti systému +\end_layout + +\begin_layout Itemize +je potřeba provést jinou posloupnost příkazů jako reakci na nějakou „neobvyklou” + událost +\end_layout + +\begin_layout Itemize +přerušující událost způsobí, že se pozastaví běh procesu v CPU takovým způsobem, + aby ho bylo možné později znovu obnovit, aniž by to přerušený proces „poznal“ +\end_layout + +\begin_layout Itemize +využití např. + při IO operacích +\end_layout + +\begin_layout Itemize +testování, zda je voláno přerušení alespoň po dokončení každé instrukce +\end_layout + +\begin_layout Itemize +přerušení bývá často voláno programem +\end_layout + +\begin_layout Itemize +Maskovatelná, lze je zakazat v stavovem řídícím slovu CPU, případně řízení + priorit (periferie, čítače, časovače) +\end_layout + +\begin_layout Itemize +Nemaskovatelná - ošetření HW chyb, hlídací obvod (Watch Dog) +\end_layout + +\begin_layout Paragraph +Výjimka +\end_layout + +\begin_layout Itemize +Výjimka – ošetření zvláštních situací, které brání dalšímu vykonávání instrukcí + (exception) +\end_layout + +\begin_deeper +\begin_layout Itemize +Matematické přetečení (výsledek instrukce s kontrolou saturace přetekl) + +\end_layout + +\begin_layout Itemize +Načtena nedefinovaná instrukce (neznámý operační kód instrukce typu IR, + nebo neznámá funkce instrukce typu R) +\end_layout + +\begin_layout Itemize +Systémové volání (instrukce syscall) +\end_layout + +\end_deeper +\begin_layout Section* +Zdroje přerušení, přerušovací vektory +\end_layout + +\begin_layout Paragraph +Určení zdroje výjimky přerušení +\end_layout + +\begin_layout Standard +Softwarové vyhledání (polled exception handling) +\end_layout + +\begin_layout Itemize +Veškerá přerušení a výjimky spouštějí rutinu od stejné adresy – např. + standardní MIPS, adresa 0x00000004 +\end_layout + +\begin_layout Itemize +Rutina zjistí důvod ze stavového registru (MIPS: cause registr) +\end_layout + +\begin_layout Standard +Vektorová obsluha přerušení +\end_layout + +\begin_layout Itemize +Již hardware CPU zjistí příčinu/číslo zdroje +\end_layout + +\begin_layout Itemize +V paměti se nachází na pevné/řídicím registrem specifikované (VBR) adrese + tabulka vektorů přerušení +\end_layout + +\begin_layout Itemize +Procesor převede číslo zdroje na index do tabulky +\end_layout + +\begin_layout Itemize +Z daného indexu načte slovo a vloží ho do PC ● +\end_layout + +\begin_layout Standard +Nevektorová obsluha více pevně určených adres podle priorit/důvodu +\end_layout + +\begin_layout Itemize +Často jsou přístupy kombinované, např. + výjimky mají oddělené cílové adresy skoků, využívá tabulku atd. + ale veškerá vnější přerušení končí pouze na jednom z vektorů +\end_layout + +\begin_layout Section +DMA přenosy +\end_layout + +\begin_layout Standard +Direct Memory Access - přímý přístup do paměti. + Využívá se při přenosu velkého množství dat - data nemusí jít přes procesor + a nevytěsňují tak data z cache. +\end_layout + +\begin_layout Itemize +Program/OS nastaví parametry přenosu +\end_layout + +\begin_layout Itemize +Procesor nastaví adresy do DMA řadiče, ten na konci přenosu vyvolá přerušení +\end_layout + +\end_body +\end_document diff --git a/spolecna/29/29.lyx b/spolecna/29/29.lyx index 84cd1b4..b861e6c 100644 --- a/spolecna/29/29.lyx +++ b/spolecna/29/29.lyx @@ -1,1459 +1,1459 @@ -#LyX 2.0 created this file. For more info see http://www.lyx.org/ -\lyxformat 413 -\begin_document -\begin_header -\textclass article -\use_default_options false -\maintain_unincluded_children false -\language czech -\language_package default -\inputencoding auto -\fontencoding global -\font_roman default -\font_sans default -\font_typewriter default -\font_default_family default -\use_non_tex_fonts false -\font_sc false -\font_osf false -\font_sf_scale 100 -\font_tt_scale 100 - -\graphics default -\default_output_format default -\output_sync 0 -\bibtex_command default -\index_command default -\paperfontsize default -\spacing single -\use_hyperref false -\papersize default -\use_geometry false -\use_amsmath 0 -\use_esint 0 -\use_mhchem 1 -\use_mathdots 1 -\cite_engine basic -\use_bibtopic false -\use_indices false -\paperorientation portrait -\suppress_date false -\use_refstyle 0 -\branch Newtonovy zákony -\selected 0 -\filename_suffix 0 -\color #faf0e6 -\end_branch -\index Index -\shortcut idx -\color #008000 -\end_index -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\paragraph_indentation default -\quotes_language english -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\html_math_output 0 -\html_css_as_file 0 -\html_be_strict false -\end_header - -\begin_body - -\begin_layout Title -29. - A4B02FYZ -\end_layout - -\begin_layout Section -Kinematika hmotného bodu -\end_layout - -\begin_layout Subsection -Vztažný systém -\end_layout - -\begin_layout Standard -Pohyb je relativní, a proto je nutno zavést vztažný systém (vztažnou soustavu). - Se vztažným systémem spojíme pohyb tělesa. - Nejznámější vztažný systém je pravoúhlý souřadný systém (kartézský). -\end_layout - -\begin_layout Subsection -Polohový vektor -\end_layout - -\begin_layout Standard -Polohový vektor určuje polohu bodu. - Jeho počáteční bod leží v počátku souřadné soustavy a jeho koncový bod - splývá s polohou, kterou určuje. - Velikost polohového vektoru je: -\begin_inset Formula $|\vec{r}|=r=\sqrt{x^{2}+y^{2}+z^{2}}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Jednotkový polohový vektor je definován poměrem: -\begin_inset Formula $\vec{r_{0}}=\frac{\vec{r}}{|\vec{r}|}$ -\end_inset - -, jeho velikost je jedna a je bezrozměrný. -\end_layout - -\begin_layout Subsection -Trajektorie -\end_layout - -\begin_layout Standard -Množina koncových bodů polohového vektoru -\begin_inset Formula $\vec{r}=\vec{r}(t)$ -\end_inset - - je trajektorie. - Je to křivka, po které se hmotný bod pohybuje. -\end_layout - -\begin_layout Subsubsection -Parametrická rovnice trajektorie -\end_layout - -\begin_layout Standard -Časová závislost polohového vektoru je vektorová rovnice popisující křivku - v prostoru. - -\begin_inset Formula $\vec{r}=f(t)=[x(t);y(t);z(t)]$ -\end_inset - -. - Každá souřadnice vektorové funkce představuje jednu parametrickou rovnici - trajektorie. -\end_layout - -\begin_layout Subsection -Rychlost -\end_layout - -\begin_layout Standard -Okamžitá rychlost je dána změnou polohy za jednotku času. - Určuje ji rovnice -\begin_inset Formula $\vec{v}=\frac{d\vec{r}}{dt}$ -\end_inset - -, jednotka rychlosti je m.s -\begin_inset Formula $^{-1}$ -\end_inset - -. - -\end_layout - -\begin_layout Standard -Tato rovnice představuje tři složkové rovnice: -\end_layout - -\begin_layout Standard -\begin_inset Formula $v_{x}=\frac{dx}{dt}$ -\end_inset - -, -\begin_inset Formula $v_{y}=\frac{dy}{dt}$ -\end_inset - -, -\begin_inset Formula $v_{z}=\frac{dz}{dt}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Velikost rychlosti se zjišťuje jako velikost vektoru, tedy (kde s je délka - dráhy): -\end_layout - -\begin_layout Standard -\begin_inset Formula $v=|\vec{v}|=\sqrt{v_{x}^{2}+v_{y}^{2}+v_{z}^{2}}=\frac{\sqrt{dx^{2}+dy^{2}+dz^{2}}}{dt}=\frac{ds}{dt}$ -\end_inset - - -\end_layout - -\begin_layout Subsection -Zrychlení -\end_layout - -\begin_layout Standard -Okamžité zrychlení je dáno změnou vektoru rychlosti za jednotku času. - Určuje ho rovnice -\begin_inset Formula $\vec{a}=\frac{d\vec{v}}{dt}$ -\end_inset - - Jednotka zrychlení je m.s -\begin_inset Formula $^{-2}$ -\end_inset - -. -\end_layout - -\begin_layout Subsubsection -Tečné a normálové zrychlení -\end_layout - -\begin_layout Standard -Zrychlení často rozkládáme na tečnou -\begin_inset Formula $\vec{a_{t}}$ -\end_inset - -a normálovou -\begin_inset Formula $\vec{a_{n}}$ -\end_inset - -složku zrychlení. - Platí, že -\begin_inset Formula $\vec{a}=\vec{a_{t}}+\vec{a_{n}}$ -\end_inset - -. - Tečná složka zrychlení má směr tečny a normálová směr normály (kolmice) - k trajektorii. - Velikost těchto složek je -\begin_inset Formula $a_{t}=\frac{dv}{dt}$ -\end_inset - - a -\begin_inset Formula $a_{n}=\frac{v^{2}}{R}$ -\end_inset - -, kde v je velikost rychlosti a R je poloměr -\begin_inset Quotes eld -\end_inset - -křivosti -\begin_inset Quotes erd -\end_inset - - trajektorietrajektorie, obojí v místě rozkladu vektoru zrychlení. - Velikost zrychlení se zjišťuje jako velikost vektoru nebo z tečné a normálové - složky zrychlení, jako -\begin_inset Formula $a=|\vec{a|=\sqrt{a_{x}^{2}+a_{y}^{2}+a_{z}^{2}}=\sqrt{a_{t}^{2}+a_{n}^{2}}}$ -\end_inset - - -\end_layout - -\begin_layout Subsection -Klasifikace pohybů -\end_layout - -\begin_layout Subsubsection -Přímočarý -\end_layout - -\begin_layout Standard -Vektor v má stále stejný směr, který splývá s přímkou, po níž se hmotný - bod pohybuje. -\end_layout - -\begin_layout Standard -Dráhou přímočarého pohybu je přímka. - Proto stačí popis v souřadné soustavě s jedinou osou x. - Pohyb tedy stačí popsat veličinami -\begin_inset Formula $x=s,\: v_{x}=v,\: a_{x}=a$ -\end_inset - - . - Rychlost přímočarého pohybu odvodíme z definiční rovnice zrychleni (7), - stačí ji napsat pro směr x. -\end_layout - -\begin_layout Standard -\begin_inset Formula $a=\frac{dv}{dt}\Rightarrow dv=adt\Rightarrow_{v_{0}}\intop^{v}dv=_{0}\intop^{t}adt\Rightarrow v-v_{0}=_{0}\int^{t}adt$ -\end_inset - - -\end_layout - -\begin_layout Standard -Pro pohyb rovnoměrně zrychlený, splňující podmínku a = konst dále platí: - Rychlost přímočarého pohybu rovnoměrně zrychleného je tedy dána rovnicí: -\end_layout - -\begin_layout Standard -\begin_inset Formula $v=_{0}\int^{t}adt+v_{0}=a\:_{0}\int^{t}dt+v_{0}=at+v_{0}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Polohu přímočarého pohybu na ose x vypočítáme, jako: -\end_layout - -\begin_layout Standard -\begin_inset Formula $v=\frac{dx}{dt}\Rightarrow dx=vdt\Rightarrow_{x_{0}}\int^{x}dx=_{0}\int^{t}vdt=x-x_{0}=_{0}\int^{t}vdt$ -\end_inset - - -\end_layout - -\begin_layout Standard -Pro pohyb rovnoměrně zrychlený, splňující podmínku a = konst dále platí: -\end_layout - -\begin_layout Standard -\begin_inset Formula $x=_{0}\int^{t}(v_{0}+at)dt+x_{0}=v_{0}\:_{0}\int^{t}dt+_{0}\int^{t}tdt+x_{0}=x_{0}+v_{0}t+\frac{1}{2}at^{2}$ -\end_inset - -, tedy -\begin_inset Formula $s=x=x_{0}+v_{0}t+\frac{1}{2}at^{2}$ -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Křivočarý -\end_layout - -\begin_layout Standard -Vektor v r mění svůj směr, který je vždy tečný ke křivce, po níž se hmotný - bod pohybuje. - Speciálními křivočarými pohyby jsou kruhový pohyb a vrhy. -\end_layout - -\begin_layout Standard -Ke křivočarému pohybu už musíme obecně použít vektorový popis. - Bez odvození napišme, že pro popis obecného křivočarého pohybu v prostoru - platí analogické rovnice jako v předchozím odstavci s tím rozdílem, že - k popisu použijeme vektory. - Bude tedy platit následující sestava rovnic: -\end_layout - -\begin_layout Standard -Pro pohyb rovnoměrně zrychlený s konstantním zrychlením: -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{v}=\vec{v_{0}}+\vec{at}$ -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{r}=\vec{r_{0}}+\vec{v_{0}}t+\frac{1}{2}\vec{a}t^{2}$ -\end_inset - - -\end_layout - -\begin_layout Section -Dynymika hmotného bodu -\end_layout - -\begin_layout Standard -Dynamika je část mechaniky, která se zabývá příčinami pohybu a příčinami - změn pohybu. -\end_layout - -\begin_layout Subsection -Základní veličiny dynamiky -\end_layout - -\begin_layout Standard -Základní veličiny dynamiky jsou hmotnost, hybnost a síla. -\end_layout - -\begin_layout Subsubsection -Hmotnost -\end_layout - -\begin_layout Standard -Hmotnost je skalární veličina, která vyjadřuje míru setrvačných a gravitačních - vlastností tělesa. - Je to jedna ze 7 základních veličin fyziky. - Základní jednotkou hmotnosti je kg. -\end_layout - -\begin_layout Subsubsection -Hybnost -\end_layout - -\begin_layout Standard -Hybnost -\begin_inset Formula $\vec{p}$ -\end_inset - - je vektorová veličina, která vyjadřuje míru setrvačných účinků a míru gravitačn -ích účinků tělesa dané hmotnosti -\begin_inset Formula $m$ -\end_inset - - Hybnost závisí na hmotnosti -\begin_inset Formula $m$ -\end_inset - - a rychlosti -\begin_inset Formula $\vec{v}$ -\end_inset - - tělesa, směr hybnosti je stejný jako směr rychlosti. - Hybnost se vypočítá jako -\begin_inset Formula $\vec{p}=m\vec{v}$ -\end_inset - -. - Jednotka hybnosti je kg.m.s -\begin_inset Formula $^{-1}$ -\end_inset - -. -\end_layout - -\begin_layout Subsubsection -Síla -\end_layout - -\begin_layout Standard -Síla je vektorová fyzikální veličina, která vyjadřuje míru vzájemného působení - těles. - Síla má za následek buďto změnu pohybového stavu těles nebo jejich deformaci. - Pokud chceme sílu definovat obecně i pro relativistickou fyziku, musíme - sílu definovat jako časovou derivaci hybnosti tělesa -\begin_inset Formula $\vec{p}$ -\end_inset - -, tedy -\begin_inset Formula $\vec{F}=\frac{d\vec{p}}{dt}$ -\end_inset - -. - V klasické mechanice (v případech, kdy lze zanedbat změnu hmotnosti při - pohybu) přejde rovnice -\begin_inset Formula $\vec{F}=\frac{d\vec{p}}{dt}$ -\end_inset - - na tvar -\begin_inset Formula $\vec{F}=\frac{d\vec{p}}{dt}=\frac{d(m\vec{v})}{dt}=m\vec{a}$ -\end_inset - -. - Tyto vztahy představují druhý Newtonův zákon, jednotka síly je Newton N=kg.m.s -\begin_inset Formula $^{-2}$ -\end_inset - -. -\end_layout - -\begin_layout Subsection -Newtonovy zákony -\end_layout - -\begin_layout Standard -Existují tři Newtonovy pohybové zákony, které umožňují určit pohyb tělesa - v inerciální vztažné soustavě, jsou-li známé síly, které působí na dané - těleso. -\end_layout - -\begin_layout Subsubsection -první Newtonův zákon -\end_layout - -\begin_layout Standard -Jestliže na těleso nepůsobí žádné vnější síly nebo výslednice sil je nulová, - pak těleso setrvává v klidu nebo v rovnoměrném přímočarém pohybu. -\end_layout - -\begin_layout Subsubsection -druhý Newtonův zákon -\end_layout - -\begin_layout Standard -Jestliže na těleso působí síla, pak se těleso pohybuje se zrychlením, které - je přímo úměrné působící síle a nepřímo úměrné hmotnosti tělesa. -\end_layout - -\begin_layout Standard -Což je dáno vzorcem (kde F je vektor síly m hmotnost a a vektor zrychlení): - -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{F}=m\vec{a}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Obecněji se tento vztah dá zapsat, jako (kde p je vektor hybnosti, je čas - a v je vektor rychlosti): -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{F}=\frac{d\vec{p}}{dt}=\frac{d(m\vec{v})}{dt}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Tento zákon lze dále použít k sestavení pohybové rovnice (kde r jevektorová - funkce, která určuje polohu hmotného bodu v závislosti na čase): -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{F}=m\frac{d^{2}\vec{r}}{dt^{2}}$ -\end_inset - - -\end_layout - -\begin_layout Subsubsection -třetí Newtonův zákon -\end_layout - -\begin_layout Standard -Proti každé akci vždy působí stejná reakce; jinak: vzájemná působení dvou - těles jsou vždy stejně velká a míří na opačné strany. -\end_layout - -\begin_layout Standard -To se dá zapsat, jako: ( -\begin_inset Formula $F_{1}$ -\end_inset - -je síla akce a -\begin_inset Formula $F_{2}$ -\end_inset - -je síla reakce) -\end_layout - -\begin_layout Standard -\begin_inset Formula $F_{1}=-F_{2}$ -\end_inset - - -\end_layout - -\begin_layout Section -Pohybové rovnice pro inerciální a neinerciální vztažné soustavy -\end_layout - -\begin_layout Subsection -Inerciální vztažná soustava -\end_layout - -\begin_layout Standard -Za inerciální vztažnou soustavu budeme považovat takovou, která se vzhledem - ke stálici (Slunci) buď nepohybuje (v = 0 ), nebo se všechny její pevné - body pohybují rovnoměrně přímočaře ( -\begin_inset Formula $\vec{v}$ -\end_inset - - = konst. - r ). - Při takovém pohybu žádný pevný bod v této soustavě nebude zakřivovat svoji - trajektorii. - Platí, že každá další vztažná soustava, je-li vzhledem k inerciální soustavě - v klidu nebo pohybu rovnoměrném přímočarém, je rovněž inerciální. - Jako příklad můžeme uvést například stěny vagonu, který se pohybuje po - přímé trati stálou rychlostí. - V inerciálních vztažných soustavách platí 1. - Newtonův pohybový zákon - zákon setrvačnosti. -\end_layout - -\begin_layout Subsection -Neinerciální vztažná soustava -\end_layout - -\begin_layout Standard -Všechny ostatní vztažné soustavy jsou neinerciální. - V neinerciálních vztažných soustavách neplatí 1. - Newtonův pohybový zákon ani 3. - Newtonův pohybový zákon, tzn. - že těleso, ačkoliv na ně nepůsobí žádná síla nebo výslednice sil je nulová, - mění svůj pohybový stav (rychlost), tzn. - pohybuje se s nenulovým zrychlením. -\end_layout - -\begin_layout Subsection -Posouvající se neinerciální soustava -\end_layout - -\begin_layout Standard -Je to soustava, která se vzhledem k inerciální pohybuje přímočaře nerovnoměrně. - Zrychlení soustavy a všech bodů na osách je stejné a nenulové. - Za reprezentující bod budeme považovat počátek takové neinerciální vztažné - soustavy. -\end_layout - -\begin_layout Standard -Zrychlení definujeme: -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{a_{u}=\frac{dR}{dt}}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Pak platí, že v takto definované neinerciální soustavě vzniká setrvačná - zdánlivá síla: -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{F_{s}}=-m\vec{a_{u}}$ -\end_inset - - -\end_layout - -\begin_layout Standard -kde m je hmotnost tělesa sledovaného v neinerciální soustavě. - Pokud chceme řešit pohybovou úlohu v neinerciální soustavě, musíme ke všem - skutečným silám připočítat síly zdánlivé. -\end_layout - -\begin_layout Subsection -Rotující neinerciální soustava -\end_layout - -\begin_layout Standard -Je to soustava, která vzhledem k inerciální rotuje. - Je výhodné zvolit si osu rotace za osu z obou soustav, inerciální i neinerciáln -í, jak ukazuje obr. - 1. - V neinerciální soustavě takového typu pak vzniknou tři zdánlivé síly. -\end_layout - -\begin_layout Subsubsection -Síla Eulerova -\end_layout - -\begin_layout Standard -Eulerova síla je zdánlivá síla působící v rotující neinerciální soustavě, - která rotuje s proměnnou úhlovou rychlostí, e -\begin_inset Formula $\neq$ -\end_inset - - 0. - Její vektorový výpočet je: -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{F_{E}}=-m\vec{\varepsilon}\times\vec{r}$ -\end_inset - - -\end_layout - -\begin_layout Standard -kde -\begin_inset Formula $\vec{r}$ -\end_inset - - je polohový vektor tělesa o hmotnosti m, nacházejícího se v rotující neinerciál -ní soustavě, která rotuje s úhlovým zrychlením -\begin_inset Formula $\vec{\varepsilon}$ -\end_inset - -. -\end_layout - -\begin_layout Subsubsection -Síla Coriolisova -\end_layout - -\begin_layout Standard -Coriolisova síla je zdánlivá síla působící na tělesa pohybující se v rotující - neinerciální vztažné soustavě tak, že se mění jejich vzdálenost od osy - otáčení. - Coriolisova síla má směr kolmý ke spojnici těleso - osa otáčení a způsobuje - stáčení trajektorie tělesa proti směru otáčení soustavy. - -\end_layout - -\begin_layout Standard -Její vektorový výpočet je dán rovnicí: -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{F_{c}}=-2m\vec{\omega\times\vec{v'}}$ -\end_inset - - -\end_layout - -\begin_layout Standard -kde m je hmotnost tělesa, -\begin_inset Formula $\vec{v}$ -\end_inset - - je rychlost tělesa v neinerciální vztažné soustavě, -\begin_inset Formula $\vec{\omega}$ -\end_inset - - je vektor úhlové rychlosti otáčení neinerciální soustavy. -\end_layout - -\begin_layout Standard -Velikost Coriolisovy síly spočteme jako: -\end_layout - -\begin_layout Standard -\begin_inset Formula $F_{c}=-2m\omega v'sin\alpha$ -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Formula $\alpha$ -\end_inset - -je úhel sevřený mezi vektorem úhlové rychlosti a vektorem rychlosti. -\end_layout - -\begin_layout Subsubsection -Síla odstředivá -\end_layout - -\begin_layout Standard -Odstředivá síla je jedna ze zdánlivých sil, které působí na těleso v otáčející - se neinerciální vztažné soustavě. - V inerciálních vztažných soustavách odstředivé síly nepůsobí. - Důsledkem odstředivé síly je odstředivé zrychlení. - Odstředivá síla je dána rovnicí: -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{F_{o}}=-m\vec{\omega}\times\vec{\omega}\times\vec{r}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Kde m je hmotnost tělesa, -\begin_inset Formula $\vec{\omega}$ -\end_inset - - je vektor úhlové rychlosti otáčející se neinerciální soustavy a -\begin_inset Formula $\vec{r}$ -\end_inset - - je polohový vektor tělesa, jehož počátek leží na ose rotace. -\end_layout - -\begin_layout Standard -Velikost odstředivé síly je: -\end_layout - -\begin_layout Standard -\begin_inset Formula $F_{o}=m\omega^{2}r$ -\end_inset - - -\end_layout - -\begin_layout Section -Práce a Energie -\end_layout - -\begin_layout Subsection -Energie -\end_layout - -\begin_layout Standard -Je schopnost vykonat práci. - Abychom mohli vykonat práci, musíme mít energii. - Celková mechanická energie objektu je součet jeho kinetické a potenciální - energie. - Jednotkou energie v soustavě SI je joule (J) = kgm -\begin_inset Formula $^{2}$ -\end_inset - - s -\begin_inset Formula $^{-2}$ -\end_inset - - (1 Joule je definován jako práce, kterou koná síla 1 N působící po dráze - 1 m.) -\end_layout - -\begin_layout Subsubsection -Kinetická energie -\end_layout - -\begin_layout Standard -Kinetická energie je energie pohybová. - Vyjadřuje skutečnost, že pohybující se těleso je schopné konat práci jako - důsledek svého pohybu, např. - nárazem na okolní objekt. - Kinetická energie hmotného bodu, těles zanedbatelných rozměrů nebo těles - pohybujících se bez rotace (takový pohyb se nazývá translační nebo posuvný) - je definována vztahem: -\end_layout - -\begin_layout Standard -\begin_inset Formula $E_{k}=\frac{1}{2}mv^{2}$ -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Potenciální energie -\end_layout - -\begin_layout Standard -Potenciální energie má svoji podstatu v poloze nebo konfiguraci. - Ne každý objekt je však schopen vykonat práci v důsledku své polohy. - V gravitačním poli Země se potencionální energie spočítá, jako: -\end_layout - -\begin_layout Standard -\begin_inset Formula $E_{p}=mgh$ -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Zákon zachování mechanické energie -\end_layout - -\begin_layout Standard -Jestliže těleso nebo hmotný systém nepodléhají účinkům okolí, pak součet - kinetické a potenciální energie částic, z nichž se skládá, zůstává stálý. - To znamená, že v soustavě se může měnit jeden druh energie v druhý. -\end_layout - -\begin_layout Standard -\begin_inset Formula $E=E_{p}+E_{k}=konst.$ -\end_inset - - -\end_layout - -\begin_layout Subsection -Práce -\end_layout - -\begin_layout Standard -Působení síly na fyzikální těleso nebo na silové pole, při kterém dochází - k posouvání nebo deformaci tohoto tělesa resp. - ke změně rozložení potenciální energie v silovém poli. -\end_layout - -\begin_layout Subsubsection -Posuvný pohyb -\end_layout - -\begin_layout Standard -Práce je definována následujícím vztahem: -\end_layout - -\begin_layout Standard -\begin_inset Formula $W=\vec{F}\cdot\vec{s}=F\cdot s\cdot cos\alpha$ -\end_inset - - -\end_layout - -\begin_layout Standard -Kde -\begin_inset Formula $\alpha$ -\end_inset - - je úhel mezi silou a trajektorií pohybu. -\end_layout - -\begin_layout Standard -Pokud je dráha zakřivena nebo je síla proměnná, použijeme pro výpočet integrál - tzv. - elementárních prací: -\end_layout - -\begin_layout Standard -\begin_inset Formula $dW=\vec{F}\cdot d\vec{s}$ -\end_inset - -, tedy -\begin_inset Formula $W=_{0}\int^{s}\vec{F}\cdot d\vec{s}=_{0}\int^{s}(F\cdot cos\alpha)d\vec{s}$ -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Otáčivý pohyb -\end_layout - -\begin_layout Standard -Mechanická práce závisí na momentu síly, který na těleso působí, na úhlu, - o který se těleso otočí, a na úhlu, který svírá vektor momentu síly a osa - otáčení tělesa. -\end_layout - -\begin_layout Standard -Otočí-li se těleso kolem neměnné osy otáčení působením konstantního momentu - síly M rovnoběžného s osou otáčení tělesa o úhel -\begin_inset Formula $\alpha$ -\end_inset - -, pak lze velikost práce zapsat ve tvaru: -\end_layout - -\begin_layout Standard -\begin_inset Formula $W=M\cdot\alpha$ -\end_inset - - -\end_layout - -\begin_layout Standard -Pokud je moment síly proměnný, použijeme pro výpočet integrál tzv. - elementárních prací: -\end_layout - -\begin_layout Standard -\begin_inset Formula $dW=\vec{M}\cdot d\vec{\alpha}$ -\end_inset - -, tedy -\begin_inset Formula $W=_{0}\int^{s}\vec{M}\cdot d\vec{\alpha}$ -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Moment síly -\end_layout - -\begin_layout Standard -Moment síly je vektorová fyzikální veličina, která vyjadřuje míru otáčivého - účinku síly. - Otáčivý účinek síly se vztahuje vzhledem k danému bodu nebo přímce. - Bod, ke kterému se moment síly určuje, se nazývá momentovým bodem. - Kolmá vzdálenost p síly od její osy k bodu je tzv. - rameno síly. -\end_layout - -\begin_layout Standard -Moment síly je definován jako součin síly a kolmé vzdálenosti osy síly od - daného bodu. - Velikost momentu síly tedy závisí na velikosti síly a na vzdálenosti od - osy otáčení (čím dále, tím větší moment síly). -\end_layout - -\begin_layout Subsubsection -Konzervativní silové pole -\end_layout - -\begin_layout Standard -Konzervativní silové pole je silové pole, které může konat práci, ale v - izolovaném systému na uzavřené křivce je celková vykonaná práce nulová. - Konzervativní síly lze vyjádřit jako záporný gradient potenciální energie: - F = - -\begin_inset Formula $\nabla$ -\end_inset - - V, proto se též nazývají potenciálové. - Mezi konzervativní síly patří např. - gravitační síla a elektrostatická síla. -\end_layout - -\begin_layout Subsubsection -Moment hybnosti -\end_layout - -\begin_layout Standard -Moment hybnosti je vektorová fyzikální veličina, která popisuje rotační - pohyb tělesa. - Moment hybnosti má při rotačním pohybu stejný význam jako hybnost při pohybu - přímočarém. - Pojem momentu hybnosti je analogický pojmu hybnosti: tak jako je hybnost - součinem hmotnosti a rychlosti v případě translačního pohybu, tak je moment - hybnosti součinem momentu setrvačnosti a úhlové rychlosti v případě rotačního - pohybu. -\end_layout - -\begin_layout Standard -Moment hybnosti L je určen vektorovým součinem jako -\end_layout - -\begin_layout Standard -L = r * p; -\end_layout - -\begin_layout Standard -kde r je polohový vektor a p je hybnost. -\end_layout - -\begin_layout Standard -Jednotka SI: kilogram krát metr na druhou za sekundu, značka jednotky: kg.m2.s-1 -\end_layout - -\begin_layout Subsubsection -I. - impulsová věta -\end_layout - -\begin_layout Standard -Časová změna celkového momentu hybnosti je rovna výslednici všech vnějších - sil, které na soustavu působí. - -\end_layout - -\begin_layout Standard -\begin_inset Graphics - filename images/impulsovaVeta1.emf - width 3cm - -\end_inset - - -\end_layout - -\begin_layout Standard -To také znamená, že vnitřní síly nemohou změnit pohybový stav soustavy jako - celku. - Je-li výslednice všech vnějších sil nulová, nemění se výsledná hybnost - soustavy. - V tomto případě se výsledná hybnost zachovává. - -\end_layout - -\begin_layout Subsubsection -II. - impulsová věta -\end_layout - -\begin_layout Standard -Časová změna výsledného momentu hybnosti je rovna celkovému momentu vnějších - sil. - -\end_layout - -\begin_layout Standard -\begin_inset Graphics - filename images/impulsovaVeta2.emf - width 3cm - -\end_inset - - -\end_layout - -\begin_layout Standard -Je-li výsledný moment vnějších sil nulový, zachovává se celkový moment hybnosti - soustavy. - -\end_layout - -\begin_layout Section -Otáčivý pohyb tuhého tělesa -\end_layout - -\begin_layout Standard -Rotace je takový pohyb tuhého tělesa, při kterém se všechny body tělesa - otáčejí kolem jedné společné osy otáčení se stejnou úhlovou rychlostí. - Trajektoriemi jednotlivých bodů tělesa jsou soustředné kružnice. - Úhlové rychlosti a úhlová zrychlení jednotlivých bodů tělesa jsou při otáčivém - pohybu stejné. -\end_layout - -\begin_layout Subsection -Osa otáčení -\end_layout - -\begin_layout Standard -Osa otáčení je přímka, kolem které se těleso při otáčivém pohybu otáčí. - Body tělesa, které na ose leží, zůstávají na svých místech, jejich rychlost - je nulová. -\end_layout - -\begin_layout Subsection -Moment setrvačnosti -\end_layout - -\begin_layout Standard -Moment setrvačnosti je fyzikální veličina, která vyjadřuje míru setrvačnosti - tělesa při otáčivém pohybu. - Její velikost závisí na rozložení hmoty v tělese vzhledem k ose otáčení. - Body (části) tělesa s větší hmotností a umístěné dál od osy mají větší - moment setrvačnosti. -\end_layout - -\begin_layout Standard -Moment setrvačnosti je definován vztahem: -\end_layout - -\begin_layout Standard -\begin_inset Formula $J=_{v}\int\rho r^{2}dV$ -\end_inset - - -\end_layout - -\begin_layout Standard -Jeho jednotka je kg.m -\begin_inset Formula $^{2}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Je-li tuhé těles homogení, tedy je-li jeho hustota -\begin_inset Formula $\rho=konst.$ -\end_inset - -, pak lze moment definovat následovně: -\end_layout - -\begin_layout Standard -\begin_inset Formula $J=\rho\:_{v}\int r^{2}dV$ -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Steinerova věta (Steinerův doplněk) -\end_layout - -\begin_layout Standard -Pro moment setrvačnosti tuhého tělesa vzhledem k ose otáčení jdoucí mimo - těžiště tělesa platí Steinerova věta: -\end_layout - -\begin_layout Standard -\begin_inset Formula $J=J_{T}+md^{2}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Kde -\begin_inset Formula $J_{T}$ -\end_inset - - je moment setrvačnosti vzhledem k ose jdoucí těžištěm tělesa, m je hmotnost - tělesa a d je kolmá vzdálenost těžiště od osy otáčení. -\end_layout - -\begin_layout Subsection -Kinetická energie při otáčivém pohybu tělesa -\end_layout - -\begin_layout Standard -Kinetická energie -\begin_inset Formula $E_{k}$ -\end_inset - - tuhého tělesa při otáčivém pohybu je rovna -\begin_inset Formula $E_{k}=\frac{1}{2}J\omega^{2}$ -\end_inset - - -\end_layout - -\begin_layout Subsection -Pohybová rovnice při otáčení tuhého tělesa -\end_layout - -\begin_layout Standard -Při otáčení tuhého tělesa lze odvodit jeho pohybovou rovnici ve tvaru: -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{M}=J\cdot\vec{\varepsilon}$ -\end_inset - - -\end_layout - -\begin_layout Section -Gravitační pole a příklady jeho působení -\end_layout - -\begin_layout Subsection -Newtonův Gravitační zákon -\end_layout - -\begin_layout Standard -Newtonův gravitační zákon je zákon, který je použitelný pouze pro slabá - gravitační pole. - Je formulován tak, že každá dvě tělesa o hmotnostech -\begin_inset Formula $m_{1}$ -\end_inset - -a -\begin_inset Formula $m_{2}$ -\end_inset - -na sebe působí silou přímo úměrnou hmotnostem obou těles a silou nepřímo - úměrnou čtverci jejich vzdáleností, tedy: -\end_layout - -\begin_layout Standard -\begin_inset Formula $F_{g}=G\frac{m_{1}m_{2}}{r^{2}}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Kde G je gravitační konstanta G=6,67 -\begin_inset Formula $\cdot$ -\end_inset - - -\begin_inset Formula $10^{-11}$ -\end_inset - - -\begin_inset Formula $m^{3}kg^{-1}s^{-2}$ -\end_inset - - -\end_layout - -\begin_layout Subsection -Intenzita Gravitačního pole -\end_layout - -\begin_layout Standard -V okolí každého tělesa existuje gravitační pole, které působí na jiná tělesa. - Pro porovnání silového působení v různých místech gravitačního pole je - zavedena intenzita grav. - pole, která je definována následujícím vztahem: -\end_layout - -\begin_layout Standard -\begin_inset Formula $\vec{K}=\frac{\vec{F_{g}}}{m}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Její jednotkou je N.kg -\begin_inset Formula $^{-1}$ -\end_inset - - (kde -\backslash -mathbf{F}_g je gravitační síla a m je hmotnost hmotného bodu, na nějž těleso - s intenzitou gravitačního pole -\backslash -mathbf{K} působí.) -\end_layout - -\begin_layout Standard -Velikost intenzity gravitačního pole -\begin_inset Formula $\vec{K}$ -\end_inset - - v daném místě pole určíme ze vztahu pro velikost gravitační síly vyjádřenou - v gravitačním zákonu. -\end_layout - -\begin_layout Standard -\begin_inset Formula $K=G\frac{M}{r^{2}}$ -\end_inset - - -\end_layout - -\begin_layout Subsection -Potenciál Gravitačního pole -\end_layout - -\begin_layout Standard -Gravitační potenciál hmotného bodu je v newtonovské fyzice vyjádřen vzorcem: -\end_layout - -\begin_layout Standard -\begin_inset Formula $V=-G\frac{M}{r}$ -\end_inset - - -\end_layout - -\begin_layout Section -Mechanické kmitavé soustavy -\end_layout - -\begin_layout Standard -Těleso připevněné k pružině, která je upevněná k boční pevné stěně, těleso - se pohybuje ve vodorovném směru bez tření, zvolený směr pohybu např. - ve směru souřadnicové osy x. - Pokud je těleso vychýleno z rovnovážné polohy, pak na něj působí síla F. -\end_layout - -\begin_layout Standard -F = -k x -\end_layout - -\begin_layout Standard -Kde k je tuhost pružiny. -\end_layout - -\begin_layout Standard -Na základě druhého Newtonova zákona je možné sestavit pohybovou rovnici: -\end_layout - -\begin_layout Standard -ma = -k x -\end_layout - -\begin_layout Standard -\begin_inset Formula $\frac{d^{2}x}{dt^{2}}+\frac{k}{m}x=0$ -\end_inset - - -\end_layout - -\begin_layout Standard -Je možné zavédst -\begin_inset Formula $\omega_{0}^{2}=\frac{k}{m}$ -\end_inset - -, následně můžeme přepsat rovnici do tvaru: -\end_layout - -\begin_layout Standard -\begin_inset Formula $\frac{d^{2}x}{dt^{2}}+\omega_{0}^{2}x=0$ -\end_inset - - -\end_layout - -\begin_layout Section -Lineární harmonický oscilátor -\end_layout - -\begin_layout Standard -Přes diferenciální rovnice se dojde ke vzorečku: -\end_layout - -\begin_layout Standard -\begin_inset Formula $u(t)=u_{0}sin(\omega_{0}t+\psi)$ -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Formula $u_{0}$ -\end_inset - -je amplituda harmonických kmitů, -\begin_inset Formula $\omega_{0}$ -\end_inset - -je úhlová rychlost -\begin_inset Formula $\psi$ -\end_inset - -je fázová konstanta. -\end_layout - -\begin_layout Standard -Rychlost a zrychlení kmitajícího hmotného bodu (tělesa) určíme na základě - následujících vztahů: -\end_layout - -\begin_layout Standard -\begin_inset Formula $v(t)=\frac{du(t)}{dt}=u_{0}\omega_{0}cos(\omega_{0}t+\psi)$ -\end_inset - - -\end_layout - -\begin_layout Standard -\begin_inset Formula $a(t)=\frac{dv(t)}{dt}=\frac{d^{2}u}{dt^{2}}=-u_{0}\omega_{0}^{2}sin(\omega_{0}t+\psi)$ -\end_inset - - -\end_layout - -\begin_layout Subsection -Tlumené kmitání -\end_layout - -\begin_layout Standard -Řešení je přes diferenciální rovnice -\end_layout - -\begin_layout Subsubsection -Chování systému při tlumených kmitech -\end_layout - -\begin_layout Standard -V závilosti na velikosti tlumení -\begin_inset Formula $\zeta$ -\end_inset - -lze rozlišit 3 situace: -\end_layout - -\begin_layout Standard -Pro -\begin_inset Formula $\zeta$ -\end_inset - -<1 systém bude oscilovat okolo rovnovážné polohy, ale amplituda bude s časem - klesat. - Pro úhlovou frekvenci kmitů platí vztah: -\end_layout - -\begin_layout Standard -\begin_inset Formula $\omega=\omega_{0}\sqrt{1-\zeta^{2}}$ -\end_inset - - -\end_layout - -\begin_layout Standard -Pro -\begin_inset Formula $\zeta$ -\end_inset - -=1 nastane kritické tlumení, průběh oscilací je popsán rovnicí: -\end_layout - -\begin_layout Standard -\begin_inset Formula $x(t)=\frac{1}{2}((x(0)+\frac{\dot{x_{0}}}{\omega_{0}}e^{\omega_{0}t}+(x(0)-\frac{\dot{x_{0}}}{\omega_{0}})e^{-\omega_{0}t})$ -\end_inset - - -\end_layout - -\begin_layout Standard -Pro -\begin_inset Formula $\zeta$ -\end_inset - ->1 Komplikovaný průběh, jde o velmi velké tlumení a oscilace proto nelze - pozorovat -\end_layout - -\end_body -\end_document +#LyX 2.0 created this file. For more info see http://www.lyx.org/ +\lyxformat 413 +\begin_document +\begin_header +\textclass article +\use_default_options false +\maintain_unincluded_children false +\language czech +\language_package default +\inputencoding auto +\fontencoding global +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 + +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_amsmath 0 +\use_esint 0 +\use_mhchem 1 +\use_mathdots 1 +\cite_engine basic +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\use_refstyle 0 +\branch Newtonovy zákony +\selected 0 +\filename_suffix 0 +\color #faf0e6 +\end_branch +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +29. + A4B02FYZ +\end_layout + +\begin_layout Section +Kinematika hmotného bodu +\end_layout + +\begin_layout Subsection +Vztažný systém +\end_layout + +\begin_layout Standard +Pohyb je relativní, a proto je nutno zavést vztažný systém (vztažnou soustavu). + Se vztažným systémem spojíme pohyb tělesa. + Nejznámější vztažný systém je pravoúhlý souřadný systém (kartézský). +\end_layout + +\begin_layout Subsection +Polohový vektor +\end_layout + +\begin_layout Standard +Polohový vektor určuje polohu bodu. + Jeho počáteční bod leží v počátku souřadné soustavy a jeho koncový bod + splývá s polohou, kterou určuje. + Velikost polohového vektoru je: +\begin_inset Formula $|\vec{r}|=r=\sqrt{x^{2}+y^{2}+z^{2}}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Jednotkový polohový vektor je definován poměrem: +\begin_inset Formula $\vec{r_{0}}=\frac{\vec{r}}{|\vec{r}|}$ +\end_inset + +, jeho velikost je jedna a je bezrozměrný. +\end_layout + +\begin_layout Subsection +Trajektorie +\end_layout + +\begin_layout Standard +Množina koncových bodů polohového vektoru +\begin_inset Formula $\vec{r}=\vec{r}(t)$ +\end_inset + + je trajektorie. + Je to křivka, po které se hmotný bod pohybuje. +\end_layout + +\begin_layout Subsubsection +Parametrická rovnice trajektorie +\end_layout + +\begin_layout Standard +Časová závislost polohového vektoru je vektorová rovnice popisující křivku + v prostoru. + +\begin_inset Formula $\vec{r}=f(t)=[x(t);y(t);z(t)]$ +\end_inset + +. + Každá souřadnice vektorové funkce představuje jednu parametrickou rovnici + trajektorie. +\end_layout + +\begin_layout Subsection +Rychlost +\end_layout + +\begin_layout Standard +Okamžitá rychlost je dána změnou polohy za jednotku času. + Určuje ji rovnice +\begin_inset Formula $\vec{v}=\frac{d\vec{r}}{dt}$ +\end_inset + +, jednotka rychlosti je m.s +\begin_inset Formula $^{-1}$ +\end_inset + +. + +\end_layout + +\begin_layout Standard +Tato rovnice představuje tři složkové rovnice: +\end_layout + +\begin_layout Standard +\begin_inset Formula $v_{x}=\frac{dx}{dt}$ +\end_inset + +, +\begin_inset Formula $v_{y}=\frac{dy}{dt}$ +\end_inset + +, +\begin_inset Formula $v_{z}=\frac{dz}{dt}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Velikost rychlosti se zjišťuje jako velikost vektoru, tedy (kde s je délka + dráhy): +\end_layout + +\begin_layout Standard +\begin_inset Formula $v=|\vec{v}|=\sqrt{v_{x}^{2}+v_{y}^{2}+v_{z}^{2}}=\frac{\sqrt{dx^{2}+dy^{2}+dz^{2}}}{dt}=\frac{ds}{dt}$ +\end_inset + + +\end_layout + +\begin_layout Subsection +Zrychlení +\end_layout + +\begin_layout Standard +Okamžité zrychlení je dáno změnou vektoru rychlosti za jednotku času. + Určuje ho rovnice +\begin_inset Formula $\vec{a}=\frac{d\vec{v}}{dt}$ +\end_inset + + Jednotka zrychlení je m.s +\begin_inset Formula $^{-2}$ +\end_inset + +. +\end_layout + +\begin_layout Subsubsection +Tečné a normálové zrychlení +\end_layout + +\begin_layout Standard +Zrychlení často rozkládáme na tečnou +\begin_inset Formula $\vec{a_{t}}$ +\end_inset + +a normálovou +\begin_inset Formula $\vec{a_{n}}$ +\end_inset + +složku zrychlení. + Platí, že +\begin_inset Formula $\vec{a}=\vec{a_{t}}+\vec{a_{n}}$ +\end_inset + +. + Tečná složka zrychlení má směr tečny a normálová směr normály (kolmice) + k trajektorii. + Velikost těchto složek je +\begin_inset Formula $a_{t}=\frac{dv}{dt}$ +\end_inset + + a +\begin_inset Formula $a_{n}=\frac{v^{2}}{R}$ +\end_inset + +, kde v je velikost rychlosti a R je poloměr +\begin_inset Quotes eld +\end_inset + +křivosti +\begin_inset Quotes erd +\end_inset + + trajektorietrajektorie, obojí v místě rozkladu vektoru zrychlení. + Velikost zrychlení se zjišťuje jako velikost vektoru nebo z tečné a normálové + složky zrychlení, jako +\begin_inset Formula $a=|\vec{a|=\sqrt{a_{x}^{2}+a_{y}^{2}+a_{z}^{2}}=\sqrt{a_{t}^{2}+a_{n}^{2}}}$ +\end_inset + + +\end_layout + +\begin_layout Subsection +Klasifikace pohybů +\end_layout + +\begin_layout Subsubsection +Přímočarý +\end_layout + +\begin_layout Standard +Vektor v má stále stejný směr, který splývá s přímkou, po níž se hmotný + bod pohybuje. +\end_layout + +\begin_layout Standard +Dráhou přímočarého pohybu je přímka. + Proto stačí popis v souřadné soustavě s jedinou osou x. + Pohyb tedy stačí popsat veličinami +\begin_inset Formula $x=s,\: v_{x}=v,\: a_{x}=a$ +\end_inset + + . + Rychlost přímočarého pohybu odvodíme z definiční rovnice zrychleni (7), + stačí ji napsat pro směr x. +\end_layout + +\begin_layout Standard +\begin_inset Formula $a=\frac{dv}{dt}\Rightarrow dv=adt\Rightarrow_{v_{0}}\intop^{v}dv=_{0}\intop^{t}adt\Rightarrow v-v_{0}=_{0}\int^{t}adt$ +\end_inset + + +\end_layout + +\begin_layout Standard +Pro pohyb rovnoměrně zrychlený, splňující podmínku a = konst dále platí: + Rychlost přímočarého pohybu rovnoměrně zrychleného je tedy dána rovnicí: +\end_layout + +\begin_layout Standard +\begin_inset Formula $v=_{0}\int^{t}adt+v_{0}=a\:_{0}\int^{t}dt+v_{0}=at+v_{0}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Polohu přímočarého pohybu na ose x vypočítáme, jako: +\end_layout + +\begin_layout Standard +\begin_inset Formula $v=\frac{dx}{dt}\Rightarrow dx=vdt\Rightarrow_{x_{0}}\int^{x}dx=_{0}\int^{t}vdt=x-x_{0}=_{0}\int^{t}vdt$ +\end_inset + + +\end_layout + +\begin_layout Standard +Pro pohyb rovnoměrně zrychlený, splňující podmínku a = konst dále platí: +\end_layout + +\begin_layout Standard +\begin_inset Formula $x=_{0}\int^{t}(v_{0}+at)dt+x_{0}=v_{0}\:_{0}\int^{t}dt+_{0}\int^{t}tdt+x_{0}=x_{0}+v_{0}t+\frac{1}{2}at^{2}$ +\end_inset + +, tedy +\begin_inset Formula $s=x=x_{0}+v_{0}t+\frac{1}{2}at^{2}$ +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Křivočarý +\end_layout + +\begin_layout Standard +Vektor v r mění svůj směr, který je vždy tečný ke křivce, po níž se hmotný + bod pohybuje. + Speciálními křivočarými pohyby jsou kruhový pohyb a vrhy. +\end_layout + +\begin_layout Standard +Ke křivočarému pohybu už musíme obecně použít vektorový popis. + Bez odvození napišme, že pro popis obecného křivočarého pohybu v prostoru + platí analogické rovnice jako v předchozím odstavci s tím rozdílem, že + k popisu použijeme vektory. + Bude tedy platit následující sestava rovnic: +\end_layout + +\begin_layout Standard +Pro pohyb rovnoměrně zrychlený s konstantním zrychlením: +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{v}=\vec{v_{0}}+\vec{at}$ +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{r}=\vec{r_{0}}+\vec{v_{0}}t+\frac{1}{2}\vec{a}t^{2}$ +\end_inset + + +\end_layout + +\begin_layout Section +Dynymika hmotného bodu +\end_layout + +\begin_layout Standard +Dynamika je část mechaniky, která se zabývá příčinami pohybu a příčinami + změn pohybu. +\end_layout + +\begin_layout Subsection +Základní veličiny dynamiky +\end_layout + +\begin_layout Standard +Základní veličiny dynamiky jsou hmotnost, hybnost a síla. +\end_layout + +\begin_layout Subsubsection +Hmotnost +\end_layout + +\begin_layout Standard +Hmotnost je skalární veličina, která vyjadřuje míru setrvačných a gravitačních + vlastností tělesa. + Je to jedna ze 7 základních veličin fyziky. + Základní jednotkou hmotnosti je kg. +\end_layout + +\begin_layout Subsubsection +Hybnost +\end_layout + +\begin_layout Standard +Hybnost +\begin_inset Formula $\vec{p}$ +\end_inset + + je vektorová veličina, která vyjadřuje míru setrvačných účinků a míru gravitačn +ích účinků tělesa dané hmotnosti +\begin_inset Formula $m$ +\end_inset + + Hybnost závisí na hmotnosti +\begin_inset Formula $m$ +\end_inset + + a rychlosti +\begin_inset Formula $\vec{v}$ +\end_inset + + tělesa, směr hybnosti je stejný jako směr rychlosti. + Hybnost se vypočítá jako +\begin_inset Formula $\vec{p}=m\vec{v}$ +\end_inset + +. + Jednotka hybnosti je kg.m.s +\begin_inset Formula $^{-1}$ +\end_inset + +. +\end_layout + +\begin_layout Subsubsection +Síla +\end_layout + +\begin_layout Standard +Síla je vektorová fyzikální veličina, která vyjadřuje míru vzájemného působení + těles. + Síla má za následek buďto změnu pohybového stavu těles nebo jejich deformaci. + Pokud chceme sílu definovat obecně i pro relativistickou fyziku, musíme + sílu definovat jako časovou derivaci hybnosti tělesa +\begin_inset Formula $\vec{p}$ +\end_inset + +, tedy +\begin_inset Formula $\vec{F}=\frac{d\vec{p}}{dt}$ +\end_inset + +. + V klasické mechanice (v případech, kdy lze zanedbat změnu hmotnosti při + pohybu) přejde rovnice +\begin_inset Formula $\vec{F}=\frac{d\vec{p}}{dt}$ +\end_inset + + na tvar +\begin_inset Formula $\vec{F}=\frac{d\vec{p}}{dt}=\frac{d(m\vec{v})}{dt}=m\vec{a}$ +\end_inset + +. + Tyto vztahy představují druhý Newtonův zákon, jednotka síly je Newton N=kg.m.s +\begin_inset Formula $^{-2}$ +\end_inset + +. +\end_layout + +\begin_layout Subsection +Newtonovy zákony +\end_layout + +\begin_layout Standard +Existují tři Newtonovy pohybové zákony, které umožňují určit pohyb tělesa + v inerciální vztažné soustavě, jsou-li známé síly, které působí na dané + těleso. +\end_layout + +\begin_layout Subsubsection +první Newtonův zákon +\end_layout + +\begin_layout Standard +Jestliže na těleso nepůsobí žádné vnější síly nebo výslednice sil je nulová, + pak těleso setrvává v klidu nebo v rovnoměrném přímočarém pohybu. +\end_layout + +\begin_layout Subsubsection +druhý Newtonův zákon +\end_layout + +\begin_layout Standard +Jestliže na těleso působí síla, pak se těleso pohybuje se zrychlením, které + je přímo úměrné působící síle a nepřímo úměrné hmotnosti tělesa. +\end_layout + +\begin_layout Standard +Což je dáno vzorcem (kde F je vektor síly m hmotnost a a vektor zrychlení): + +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{F}=m\vec{a}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Obecněji se tento vztah dá zapsat, jako (kde p je vektor hybnosti, je čas + a v je vektor rychlosti): +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{F}=\frac{d\vec{p}}{dt}=\frac{d(m\vec{v})}{dt}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Tento zákon lze dále použít k sestavení pohybové rovnice (kde r jevektorová + funkce, která určuje polohu hmotného bodu v závislosti na čase): +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{F}=m\frac{d^{2}\vec{r}}{dt^{2}}$ +\end_inset + + +\end_layout + +\begin_layout Subsubsection +třetí Newtonův zákon +\end_layout + +\begin_layout Standard +Proti každé akci vždy působí stejná reakce; jinak: vzájemná působení dvou + těles jsou vždy stejně velká a míří na opačné strany. +\end_layout + +\begin_layout Standard +To se dá zapsat, jako: ( +\begin_inset Formula $F_{1}$ +\end_inset + +je síla akce a +\begin_inset Formula $F_{2}$ +\end_inset + +je síla reakce) +\end_layout + +\begin_layout Standard +\begin_inset Formula $F_{1}=-F_{2}$ +\end_inset + + +\end_layout + +\begin_layout Section +Pohybové rovnice pro inerciální a neinerciální vztažné soustavy +\end_layout + +\begin_layout Subsection +Inerciální vztažná soustava +\end_layout + +\begin_layout Standard +Za inerciální vztažnou soustavu budeme považovat takovou, která se vzhledem + ke stálici (Slunci) buď nepohybuje (v = 0 ), nebo se všechny její pevné + body pohybují rovnoměrně přímočaře ( +\begin_inset Formula $\vec{v}$ +\end_inset + + = konst. + r ). + Při takovém pohybu žádný pevný bod v této soustavě nebude zakřivovat svoji + trajektorii. + Platí, že každá další vztažná soustava, je-li vzhledem k inerciální soustavě + v klidu nebo pohybu rovnoměrném přímočarém, je rovněž inerciální. + Jako příklad můžeme uvést například stěny vagonu, který se pohybuje po + přímé trati stálou rychlostí. + V inerciálních vztažných soustavách platí 1. + Newtonův pohybový zákon - zákon setrvačnosti. +\end_layout + +\begin_layout Subsection +Neinerciální vztažná soustava +\end_layout + +\begin_layout Standard +Všechny ostatní vztažné soustavy jsou neinerciální. + V neinerciálních vztažných soustavách neplatí 1. + Newtonův pohybový zákon ani 3. + Newtonův pohybový zákon, tzn. + že těleso, ačkoliv na ně nepůsobí žádná síla nebo výslednice sil je nulová, + mění svůj pohybový stav (rychlost), tzn. + pohybuje se s nenulovým zrychlením. +\end_layout + +\begin_layout Subsection +Posouvající se neinerciální soustava +\end_layout + +\begin_layout Standard +Je to soustava, která se vzhledem k inerciální pohybuje přímočaře nerovnoměrně. + Zrychlení soustavy a všech bodů na osách je stejné a nenulové. + Za reprezentující bod budeme považovat počátek takové neinerciální vztažné + soustavy. +\end_layout + +\begin_layout Standard +Zrychlení definujeme: +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{a_{u}=\frac{dR}{dt}}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Pak platí, že v takto definované neinerciální soustavě vzniká setrvačná + zdánlivá síla: +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{F_{s}}=-m\vec{a_{u}}$ +\end_inset + + +\end_layout + +\begin_layout Standard +kde m je hmotnost tělesa sledovaného v neinerciální soustavě. + Pokud chceme řešit pohybovou úlohu v neinerciální soustavě, musíme ke všem + skutečným silám připočítat síly zdánlivé. +\end_layout + +\begin_layout Subsection +Rotující neinerciální soustava +\end_layout + +\begin_layout Standard +Je to soustava, která vzhledem k inerciální rotuje. + Je výhodné zvolit si osu rotace za osu z obou soustav, inerciální i neinerciáln +í, jak ukazuje obr. + 1. + V neinerciální soustavě takového typu pak vzniknou tři zdánlivé síly. +\end_layout + +\begin_layout Subsubsection +Síla Eulerova +\end_layout + +\begin_layout Standard +Eulerova síla je zdánlivá síla působící v rotující neinerciální soustavě, + která rotuje s proměnnou úhlovou rychlostí, e +\begin_inset Formula $\neq$ +\end_inset + + 0. + Její vektorový výpočet je: +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{F_{E}}=-m\vec{\varepsilon}\times\vec{r}$ +\end_inset + + +\end_layout + +\begin_layout Standard +kde +\begin_inset Formula $\vec{r}$ +\end_inset + + je polohový vektor tělesa o hmotnosti m, nacházejícího se v rotující neinerciál +ní soustavě, která rotuje s úhlovým zrychlením +\begin_inset Formula $\vec{\varepsilon}$ +\end_inset + +. +\end_layout + +\begin_layout Subsubsection +Síla Coriolisova +\end_layout + +\begin_layout Standard +Coriolisova síla je zdánlivá síla působící na tělesa pohybující se v rotující + neinerciální vztažné soustavě tak, že se mění jejich vzdálenost od osy + otáčení. + Coriolisova síla má směr kolmý ke spojnici těleso - osa otáčení a způsobuje + stáčení trajektorie tělesa proti směru otáčení soustavy. + +\end_layout + +\begin_layout Standard +Její vektorový výpočet je dán rovnicí: +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{F_{c}}=-2m\vec{\omega\times\vec{v'}}$ +\end_inset + + +\end_layout + +\begin_layout Standard +kde m je hmotnost tělesa, +\begin_inset Formula $\vec{v}$ +\end_inset + + je rychlost tělesa v neinerciální vztažné soustavě, +\begin_inset Formula $\vec{\omega}$ +\end_inset + + je vektor úhlové rychlosti otáčení neinerciální soustavy. +\end_layout + +\begin_layout Standard +Velikost Coriolisovy síly spočteme jako: +\end_layout + +\begin_layout Standard +\begin_inset Formula $F_{c}=-2m\omega v'sin\alpha$ +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Formula $\alpha$ +\end_inset + +je úhel sevřený mezi vektorem úhlové rychlosti a vektorem rychlosti. +\end_layout + +\begin_layout Subsubsection +Síla odstředivá +\end_layout + +\begin_layout Standard +Odstředivá síla je jedna ze zdánlivých sil, které působí na těleso v otáčející + se neinerciální vztažné soustavě. + V inerciálních vztažných soustavách odstředivé síly nepůsobí. + Důsledkem odstředivé síly je odstředivé zrychlení. + Odstředivá síla je dána rovnicí: +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{F_{o}}=-m\vec{\omega}\times\vec{\omega}\times\vec{r}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Kde m je hmotnost tělesa, +\begin_inset Formula $\vec{\omega}$ +\end_inset + + je vektor úhlové rychlosti otáčející se neinerciální soustavy a +\begin_inset Formula $\vec{r}$ +\end_inset + + je polohový vektor tělesa, jehož počátek leží na ose rotace. +\end_layout + +\begin_layout Standard +Velikost odstředivé síly je: +\end_layout + +\begin_layout Standard +\begin_inset Formula $F_{o}=m\omega^{2}r$ +\end_inset + + +\end_layout + +\begin_layout Section +Práce a Energie +\end_layout + +\begin_layout Subsection +Energie +\end_layout + +\begin_layout Standard +Je schopnost vykonat práci. + Abychom mohli vykonat práci, musíme mít energii. + Celková mechanická energie objektu je součet jeho kinetické a potenciální + energie. + Jednotkou energie v soustavě SI je joule (J) = kgm +\begin_inset Formula $^{2}$ +\end_inset + + s +\begin_inset Formula $^{-2}$ +\end_inset + + (1 Joule je definován jako práce, kterou koná síla 1 N působící po dráze + 1 m.) +\end_layout + +\begin_layout Subsubsection +Kinetická energie +\end_layout + +\begin_layout Standard +Kinetická energie je energie pohybová. + Vyjadřuje skutečnost, že pohybující se těleso je schopné konat práci jako + důsledek svého pohybu, např. + nárazem na okolní objekt. + Kinetická energie hmotného bodu, těles zanedbatelných rozměrů nebo těles + pohybujících se bez rotace (takový pohyb se nazývá translační nebo posuvný) + je definována vztahem: +\end_layout + +\begin_layout Standard +\begin_inset Formula $E_{k}=\frac{1}{2}mv^{2}$ +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Potenciální energie +\end_layout + +\begin_layout Standard +Potenciální energie má svoji podstatu v poloze nebo konfiguraci. + Ne každý objekt je však schopen vykonat práci v důsledku své polohy. + V gravitačním poli Země se potencionální energie spočítá, jako: +\end_layout + +\begin_layout Standard +\begin_inset Formula $E_{p}=mgh$ +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Zákon zachování mechanické energie +\end_layout + +\begin_layout Standard +Jestliže těleso nebo hmotný systém nepodléhají účinkům okolí, pak součet + kinetické a potenciální energie částic, z nichž se skládá, zůstává stálý. + To znamená, že v soustavě se může měnit jeden druh energie v druhý. +\end_layout + +\begin_layout Standard +\begin_inset Formula $E=E_{p}+E_{k}=konst.$ +\end_inset + + +\end_layout + +\begin_layout Subsection +Práce +\end_layout + +\begin_layout Standard +Působení síly na fyzikální těleso nebo na silové pole, při kterém dochází + k posouvání nebo deformaci tohoto tělesa resp. + ke změně rozložení potenciální energie v silovém poli. +\end_layout + +\begin_layout Subsubsection +Posuvný pohyb +\end_layout + +\begin_layout Standard +Práce je definována následujícím vztahem: +\end_layout + +\begin_layout Standard +\begin_inset Formula $W=\vec{F}\cdot\vec{s}=F\cdot s\cdot cos\alpha$ +\end_inset + + +\end_layout + +\begin_layout Standard +Kde +\begin_inset Formula $\alpha$ +\end_inset + + je úhel mezi silou a trajektorií pohybu. +\end_layout + +\begin_layout Standard +Pokud je dráha zakřivena nebo je síla proměnná, použijeme pro výpočet integrál + tzv. + elementárních prací: +\end_layout + +\begin_layout Standard +\begin_inset Formula $dW=\vec{F}\cdot d\vec{s}$ +\end_inset + +, tedy +\begin_inset Formula $W=_{0}\int^{s}\vec{F}\cdot d\vec{s}=_{0}\int^{s}(F\cdot cos\alpha)d\vec{s}$ +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Otáčivý pohyb +\end_layout + +\begin_layout Standard +Mechanická práce závisí na momentu síly, který na těleso působí, na úhlu, + o který se těleso otočí, a na úhlu, který svírá vektor momentu síly a osa + otáčení tělesa. +\end_layout + +\begin_layout Standard +Otočí-li se těleso kolem neměnné osy otáčení působením konstantního momentu + síly M rovnoběžného s osou otáčení tělesa o úhel +\begin_inset Formula $\alpha$ +\end_inset + +, pak lze velikost práce zapsat ve tvaru: +\end_layout + +\begin_layout Standard +\begin_inset Formula $W=M\cdot\alpha$ +\end_inset + + +\end_layout + +\begin_layout Standard +Pokud je moment síly proměnný, použijeme pro výpočet integrál tzv. + elementárních prací: +\end_layout + +\begin_layout Standard +\begin_inset Formula $dW=\vec{M}\cdot d\vec{\alpha}$ +\end_inset + +, tedy +\begin_inset Formula $W=_{0}\int^{s}\vec{M}\cdot d\vec{\alpha}$ +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Moment síly +\end_layout + +\begin_layout Standard +Moment síly je vektorová fyzikální veličina, která vyjadřuje míru otáčivého + účinku síly. + Otáčivý účinek síly se vztahuje vzhledem k danému bodu nebo přímce. + Bod, ke kterému se moment síly určuje, se nazývá momentovým bodem. + Kolmá vzdálenost p síly od její osy k bodu je tzv. + rameno síly. +\end_layout + +\begin_layout Standard +Moment síly je definován jako součin síly a kolmé vzdálenosti osy síly od + daného bodu. + Velikost momentu síly tedy závisí na velikosti síly a na vzdálenosti od + osy otáčení (čím dále, tím větší moment síly). +\end_layout + +\begin_layout Subsubsection +Konzervativní silové pole +\end_layout + +\begin_layout Standard +Konzervativní silové pole je silové pole, které může konat práci, ale v + izolovaném systému na uzavřené křivce je celková vykonaná práce nulová. + Konzervativní síly lze vyjádřit jako záporný gradient potenciální energie: + F = - +\begin_inset Formula $\nabla$ +\end_inset + + V, proto se též nazývají potenciálové. + Mezi konzervativní síly patří např. + gravitační síla a elektrostatická síla. +\end_layout + +\begin_layout Subsubsection +Moment hybnosti +\end_layout + +\begin_layout Standard +Moment hybnosti je vektorová fyzikální veličina, která popisuje rotační + pohyb tělesa. + Moment hybnosti má při rotačním pohybu stejný význam jako hybnost při pohybu + přímočarém. + Pojem momentu hybnosti je analogický pojmu hybnosti: tak jako je hybnost + součinem hmotnosti a rychlosti v případě translačního pohybu, tak je moment + hybnosti součinem momentu setrvačnosti a úhlové rychlosti v případě rotačního + pohybu. +\end_layout + +\begin_layout Standard +Moment hybnosti L je určen vektorovým součinem jako +\end_layout + +\begin_layout Standard +L = r * p; +\end_layout + +\begin_layout Standard +kde r je polohový vektor a p je hybnost. +\end_layout + +\begin_layout Standard +Jednotka SI: kilogram krát metr na druhou za sekundu, značka jednotky: kg.m2.s-1 +\end_layout + +\begin_layout Subsubsection +I. + impulsová věta +\end_layout + +\begin_layout Standard +Časová změna celkového momentu hybnosti je rovna výslednici všech vnějších + sil, které na soustavu působí. + +\end_layout + +\begin_layout Standard +\begin_inset Graphics + filename images/impulsovaVeta1.emf + width 3cm + +\end_inset + + +\end_layout + +\begin_layout Standard +To také znamená, že vnitřní síly nemohou změnit pohybový stav soustavy jako + celku. + Je-li výslednice všech vnějších sil nulová, nemění se výsledná hybnost + soustavy. + V tomto případě se výsledná hybnost zachovává. + +\end_layout + +\begin_layout Subsubsection +II. + impulsová věta +\end_layout + +\begin_layout Standard +Časová změna výsledného momentu hybnosti je rovna celkovému momentu vnějších + sil. + +\end_layout + +\begin_layout Standard +\begin_inset Graphics + filename images/impulsovaVeta2.emf + width 3cm + +\end_inset + + +\end_layout + +\begin_layout Standard +Je-li výsledný moment vnějších sil nulový, zachovává se celkový moment hybnosti + soustavy. + +\end_layout + +\begin_layout Section +Otáčivý pohyb tuhého tělesa +\end_layout + +\begin_layout Standard +Rotace je takový pohyb tuhého tělesa, při kterém se všechny body tělesa + otáčejí kolem jedné společné osy otáčení se stejnou úhlovou rychlostí. + Trajektoriemi jednotlivých bodů tělesa jsou soustředné kružnice. + Úhlové rychlosti a úhlová zrychlení jednotlivých bodů tělesa jsou při otáčivém + pohybu stejné. +\end_layout + +\begin_layout Subsection +Osa otáčení +\end_layout + +\begin_layout Standard +Osa otáčení je přímka, kolem které se těleso při otáčivém pohybu otáčí. + Body tělesa, které na ose leží, zůstávají na svých místech, jejich rychlost + je nulová. +\end_layout + +\begin_layout Subsection +Moment setrvačnosti +\end_layout + +\begin_layout Standard +Moment setrvačnosti je fyzikální veličina, která vyjadřuje míru setrvačnosti + tělesa při otáčivém pohybu. + Její velikost závisí na rozložení hmoty v tělese vzhledem k ose otáčení. + Body (části) tělesa s větší hmotností a umístěné dál od osy mají větší + moment setrvačnosti. +\end_layout + +\begin_layout Standard +Moment setrvačnosti je definován vztahem: +\end_layout + +\begin_layout Standard +\begin_inset Formula $J=_{v}\int\rho r^{2}dV$ +\end_inset + + +\end_layout + +\begin_layout Standard +Jeho jednotka je kg.m +\begin_inset Formula $^{2}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Je-li tuhé těles homogení, tedy je-li jeho hustota +\begin_inset Formula $\rho=konst.$ +\end_inset + +, pak lze moment definovat následovně: +\end_layout + +\begin_layout Standard +\begin_inset Formula $J=\rho\:_{v}\int r^{2}dV$ +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Steinerova věta (Steinerův doplněk) +\end_layout + +\begin_layout Standard +Pro moment setrvačnosti tuhého tělesa vzhledem k ose otáčení jdoucí mimo + těžiště tělesa platí Steinerova věta: +\end_layout + +\begin_layout Standard +\begin_inset Formula $J=J_{T}+md^{2}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Kde +\begin_inset Formula $J_{T}$ +\end_inset + + je moment setrvačnosti vzhledem k ose jdoucí těžištěm tělesa, m je hmotnost + tělesa a d je kolmá vzdálenost těžiště od osy otáčení. +\end_layout + +\begin_layout Subsection +Kinetická energie při otáčivém pohybu tělesa +\end_layout + +\begin_layout Standard +Kinetická energie +\begin_inset Formula $E_{k}$ +\end_inset + + tuhého tělesa při otáčivém pohybu je rovna +\begin_inset Formula $E_{k}=\frac{1}{2}J\omega^{2}$ +\end_inset + + +\end_layout + +\begin_layout Subsection +Pohybová rovnice při otáčení tuhého tělesa +\end_layout + +\begin_layout Standard +Při otáčení tuhého tělesa lze odvodit jeho pohybovou rovnici ve tvaru: +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{M}=J\cdot\vec{\varepsilon}$ +\end_inset + + +\end_layout + +\begin_layout Section +Gravitační pole a příklady jeho působení +\end_layout + +\begin_layout Subsection +Newtonův Gravitační zákon +\end_layout + +\begin_layout Standard +Newtonův gravitační zákon je zákon, který je použitelný pouze pro slabá + gravitační pole. + Je formulován tak, že každá dvě tělesa o hmotnostech +\begin_inset Formula $m_{1}$ +\end_inset + +a +\begin_inset Formula $m_{2}$ +\end_inset + +na sebe působí silou přímo úměrnou hmotnostem obou těles a silou nepřímo + úměrnou čtverci jejich vzdáleností, tedy: +\end_layout + +\begin_layout Standard +\begin_inset Formula $F_{g}=G\frac{m_{1}m_{2}}{r^{2}}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Kde G je gravitační konstanta G=6,67 +\begin_inset Formula $\cdot$ +\end_inset + + +\begin_inset Formula $10^{-11}$ +\end_inset + + +\begin_inset Formula $m^{3}kg^{-1}s^{-2}$ +\end_inset + + +\end_layout + +\begin_layout Subsection +Intenzita Gravitačního pole +\end_layout + +\begin_layout Standard +V okolí každého tělesa existuje gravitační pole, které působí na jiná tělesa. + Pro porovnání silového působení v různých místech gravitačního pole je + zavedena intenzita grav. + pole, která je definována následujícím vztahem: +\end_layout + +\begin_layout Standard +\begin_inset Formula $\vec{K}=\frac{\vec{F_{g}}}{m}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Její jednotkou je N.kg +\begin_inset Formula $^{-1}$ +\end_inset + + (kde +\backslash +mathbf{F}_g je gravitační síla a m je hmotnost hmotného bodu, na nějž těleso + s intenzitou gravitačního pole +\backslash +mathbf{K} působí.) +\end_layout + +\begin_layout Standard +Velikost intenzity gravitačního pole +\begin_inset Formula $\vec{K}$ +\end_inset + + v daném místě pole určíme ze vztahu pro velikost gravitační síly vyjádřenou + v gravitačním zákonu. +\end_layout + +\begin_layout Standard +\begin_inset Formula $K=G\frac{M}{r^{2}}$ +\end_inset + + +\end_layout + +\begin_layout Subsection +Potenciál Gravitačního pole +\end_layout + +\begin_layout Standard +Gravitační potenciál hmotného bodu je v newtonovské fyzice vyjádřen vzorcem: +\end_layout + +\begin_layout Standard +\begin_inset Formula $V=-G\frac{M}{r}$ +\end_inset + + +\end_layout + +\begin_layout Section +Mechanické kmitavé soustavy +\end_layout + +\begin_layout Standard +Těleso připevněné k pružině, která je upevněná k boční pevné stěně, těleso + se pohybuje ve vodorovném směru bez tření, zvolený směr pohybu např. + ve směru souřadnicové osy x. + Pokud je těleso vychýleno z rovnovážné polohy, pak na něj působí síla F. +\end_layout + +\begin_layout Standard +F = -k x +\end_layout + +\begin_layout Standard +Kde k je tuhost pružiny. +\end_layout + +\begin_layout Standard +Na základě druhého Newtonova zákona je možné sestavit pohybovou rovnici: +\end_layout + +\begin_layout Standard +ma = -k x +\end_layout + +\begin_layout Standard +\begin_inset Formula $\frac{d^{2}x}{dt^{2}}+\frac{k}{m}x=0$ +\end_inset + + +\end_layout + +\begin_layout Standard +Je možné zavédst +\begin_inset Formula $\omega_{0}^{2}=\frac{k}{m}$ +\end_inset + +, následně můžeme přepsat rovnici do tvaru: +\end_layout + +\begin_layout Standard +\begin_inset Formula $\frac{d^{2}x}{dt^{2}}+\omega_{0}^{2}x=0$ +\end_inset + + +\end_layout + +\begin_layout Section +Lineární harmonický oscilátor +\end_layout + +\begin_layout Standard +Přes diferenciální rovnice se dojde ke vzorečku: +\end_layout + +\begin_layout Standard +\begin_inset Formula $u(t)=u_{0}sin(\omega_{0}t+\psi)$ +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Formula $u_{0}$ +\end_inset + +je amplituda harmonických kmitů, +\begin_inset Formula $\omega_{0}$ +\end_inset + +je úhlová rychlost +\begin_inset Formula $\psi$ +\end_inset + +je fázová konstanta. +\end_layout + +\begin_layout Standard +Rychlost a zrychlení kmitajícího hmotného bodu (tělesa) určíme na základě + následujících vztahů: +\end_layout + +\begin_layout Standard +\begin_inset Formula $v(t)=\frac{du(t)}{dt}=u_{0}\omega_{0}cos(\omega_{0}t+\psi)$ +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Formula $a(t)=\frac{dv(t)}{dt}=\frac{d^{2}u}{dt^{2}}=-u_{0}\omega_{0}^{2}sin(\omega_{0}t+\psi)$ +\end_inset + + +\end_layout + +\begin_layout Subsection +Tlumené kmitání +\end_layout + +\begin_layout Standard +Řešení je přes diferenciální rovnice +\end_layout + +\begin_layout Subsubsection +Chování systému při tlumených kmitech +\end_layout + +\begin_layout Standard +V závilosti na velikosti tlumení +\begin_inset Formula $\zeta$ +\end_inset + +lze rozlišit 3 situace: +\end_layout + +\begin_layout Standard +Pro +\begin_inset Formula $\zeta$ +\end_inset + +<1 systém bude oscilovat okolo rovnovážné polohy, ale amplituda bude s časem + klesat. + Pro úhlovou frekvenci kmitů platí vztah: +\end_layout + +\begin_layout Standard +\begin_inset Formula $\omega=\omega_{0}\sqrt{1-\zeta^{2}}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Pro +\begin_inset Formula $\zeta$ +\end_inset + +=1 nastane kritické tlumení, průběh oscilací je popsán rovnicí: +\end_layout + +\begin_layout Standard +\begin_inset Formula $x(t)=\frac{1}{2}((x(0)+\frac{\dot{x_{0}}}{\omega_{0}}e^{\omega_{0}t}+(x(0)-\frac{\dot{x_{0}}}{\omega_{0}})e^{-\omega_{0}t})$ +\end_inset + + +\end_layout + +\begin_layout Standard +Pro +\begin_inset Formula $\zeta$ +\end_inset + +>1 Komplikovaný průběh, jde o velmi velké tlumení a oscilace proto nelze + pozorovat +\end_layout + +\end_body +\end_document diff --git a/spolecna/33/33.lyx b/spolecna/33/33.lyx index b8c9946..1499701 100644 --- a/spolecna/33/33.lyx +++ b/spolecna/33/33.lyx @@ -1,809 +1,809 @@ -#LyX 2.0 created this file. For more info see http://www.lyx.org/ -\lyxformat 413 -\begin_document -\begin_header -\textclass article -\use_default_options true -\maintain_unincluded_children false -\language english -\language_package default -\inputencoding auto -\fontencoding global -\font_roman default -\font_sans default -\font_typewriter default -\font_default_family default -\use_non_tex_fonts false -\font_sc false -\font_osf false -\font_sf_scale 100 -\font_tt_scale 100 - -\graphics default -\default_output_format default -\output_sync 0 -\bibtex_command default -\index_command default -\paperfontsize default -\spacing single -\use_hyperref false -\papersize default -\use_geometry false -\use_amsmath 1 -\use_esint 1 -\use_mhchem 1 -\use_mathdots 1 -\cite_engine basic -\use_bibtopic false -\use_indices false -\paperorientation portrait -\suppress_date false -\use_refstyle 1 -\index Index -\shortcut idx -\color #008000 -\end_index -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\paragraph_indentation default -\quotes_language english -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tracking_changes false -\output_changes false -\html_math_output 0 -\html_css_as_file 0 -\html_be_strict false -\end_header - -\begin_body - -\begin_layout Title -Otázka číslo 33 (A4B33OPT) -\end_layout - -\begin_layout Author -Martin Stránský -\end_layout - -\begin_layout Standard -\begin_inset Quotes eld -\end_inset - -Snažili jsme se udělat to co nejlépe, ale dopadlo to jako vždycky. -\begin_inset Quotes erd -\end_inset - - -\end_layout - -\begin_layout Section -Lineární programování -\end_layout - -\begin_layout Standard -Linieární programování znamená řešení úlohy minimalizace lineární funkce - -\begin_inset Formula $f=c^{T}x$ -\end_inset - - ( -\begin_inset Formula $+d)$ -\end_inset - - za podmínek affinních funkcí -\begin_inset Formula $g_{i}$ -\end_inset - -, -\begin_inset Formula $h_{i}$ -\end_inset - - (affinita viz níže). -\end_layout - -\begin_layout Standard -Slouží například k řešení úloh (viz skripta): -\end_layout - -\begin_layout Itemize -optimální výrobní program (z různých druhů surovin vyrábíme různé druhy - zboží s různou cenou) -\end_layout - -\begin_layout Itemize -směšovací problém (kuchařka má uvařit oběd, aby v něm bylo -\begin_inset Formula $b_{1}$ -\end_inset - - vitamínů, -\begin_inset Formula $b_{2}$ -\end_inset - - bílkovin a -\begin_inset Formula $b_{3}$ -\end_inset - - tuků) -\end_layout - -\begin_layout Itemize -distribuční problém -\end_layout - -\begin_layout Itemize -dopravní problém -\end_layout - -\begin_layout Itemize -hledání rovnovážných stavů u lineárních systémů a pod. -\end_layout - -\begin_layout Standard -Obecná formulace úlohy LP: -\end_layout - -\begin_layout Standard -\begin_inset Formula -\[ -\begin{array}{ccc} -\min\:(\max) & c_{1}x_{1}+c_{2}x_{2}+\ldots c_{1}x_{n}\\ -z.p. & a_{i1}x_{1}+\ldots+a_{in}x_{n}\geq b_{i} & i\in I_{+}\\ - & a_{i1}x_{1}+\ldots+a_{in}x_{n}\leq b_{i} & i\in I_{-}\\ - & a_{i1}x_{1}+\ldots+a_{in}x_{n}=b_{i} & i\in I_{0}\\ - & x_{j}\geq0 & j\in J_{+}\\ - & x_{j}\leq0 & j\in J_{-}\\ - & x_{j}\in\mathbb{R} & j\in J_{0} -\end{array} -\] - -\end_inset - - -\end_layout - -\begin_layout Standard -Obecnou formulaci převádíme na standardní tvar -\end_layout - -\begin_layout Standard -\begin_inset Formula -\[ -\begin{array}{ccc} -\min & c_{1}x_{1}+c_{2}x_{2}+\ldots c_{1}x_{n}\\ -z.p. & a_{i1}x_{1}+\ldots+a_{in}x_{n}=b_{i} & i=1,\ldots,m\\ - & x_{j}\geq0 & j=1,\ldots,n -\end{array} -\] - -\end_inset - - -\end_layout - -\begin_layout Standard -zkráceně -\begin_inset Formula -\[ -\min\{c^{T}x\mid Ax=b,\: x>0\} -\] - -\end_inset - - -\end_layout - -\begin_layout Standard -a zpět následovně: -\end_layout - -\begin_layout Itemize -Maximalizaci nahradíme minimalizací podle -\begin_inset Formula $\min_{x\in X}f(x)=-\max_{x\in X}(-f(x)).$ -\end_inset - - -\end_layout - -\begin_layout Itemize -( -\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}=b_{i}$ -\end_inset - - nahradíme -\begin_inset Formula $ $ -\end_inset - - -\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}\leq b_{i}$ -\end_inset - - a -\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}\geq b_{i}$ -\end_inset - -.) -\end_layout - -\begin_layout Itemize -\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}\leq b_{i}$ -\end_inset - - doplníme slackovou proměnnou -\family roman -\series medium -\shape up -\size normal -\emph off -\bar no -\strikeout off -\uuline off -\uwave off -\noun off -\color none - -\begin_inset Formula $u_{i}\geq0$ -\end_inset - -, -\family default -\series default -\shape default -\size default -\emph default -\bar default -\strikeout default -\uuline default -\uwave default -\noun default -\color inherit - -\family roman -\series medium -\shape up -\size normal -\emph off -\bar no -\strikeout off -\uuline off -\uwave off -\noun off -\color none - -\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}+u_{i}=b_{i}$ -\end_inset - -. -\end_layout - -\begin_layout Itemize -\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}\geq b_{i}$ -\end_inset - - vynásobíme -\begin_inset Formula $-1$ -\end_inset - - a doplníme slackovou proměnnou -\family roman -\series medium -\shape up -\size normal -\emph off -\bar no -\strikeout off -\uuline off -\uwave off -\noun off -\color none - -\begin_inset Formula $u_{i}\geq0$ -\end_inset - -, -\family default -\series default -\shape default -\size default -\emph default -\bar default -\strikeout default -\uuline default -\uwave default -\noun default -\color inherit - -\family roman -\series medium -\shape up -\size normal -\emph off -\bar no -\strikeout off -\uuline off -\uwave off -\noun off -\color none - -\begin_inset Formula $-a_{i1}x_{1}-\ldots-a_{in}x_{n}+u_{i}=-b_{i}$ -\end_inset - -. -\end_layout - -\begin_layout Itemize -\begin_inset Formula $x_{i}\in\mathbb{R}$ -\end_inset - - převedeme na -\begin_inset Formula $x_{i}^{+}\geq0$ -\end_inset - -, -\begin_inset Formula $x_{i}^{-}\geq0$ -\end_inset - -, -\begin_inset Formula $x_{i}=x_{i}^{+}-x_{i}^{-}$ -\end_inset - -. -\end_layout - -\begin_layout Standard -Příklad (vlastní): převedení z obecného tvaru na standardní. -\end_layout - -\begin_layout Standard -\begin_inset Formula -\[ -\begin{array}{cc} -\max & c^{T}x\\ -z.p. & a_{11}x_{1}+\ldots+a_{2n}x_{n}\geq b_{i}\\ - & a_{21}x_{1}+\ldots+a_{2n}x_{n}\leq b_{i}\\ - & a_{i1}x_{1}+\ldots+a_{in}x_{n}=b_{i}\\ - & x_{1},\ldots,x_{n}\geq0 -\end{array} -\] - -\end_inset - - -\end_layout - -\begin_layout Standard -se převede na -\begin_inset Formula -\[ -\begin{array}{ccc} --\min & -c_{1}x_{1}\ldots-c_{n}x_{n}\\ -z.p. & -a_{11}x_{1}-\ldots-a_{2n}x_{n}+u_{1}=-b_{i}\\ - & a_{21}x_{1}+\ldots+a_{2n}x_{n}+u_{2}=b_{i}\\ - & a_{i1}x_{1}+\ldots+a_{in}x_{n}=b_{i} & i\in\left[3,m\right]\\ - & x_{1},\ldots,x_{n},u_{1},u_{2}\geq0 -\end{array} -\] - -\end_inset - - -\end_layout - -\begin_layout Standard -Ještě poznámka k řešení přeurčených rovnic -\begin_inset Formula $Ax=b$ -\end_inset - -, -\begin_inset Formula $A\in\mathbb{R}^{m\times n}$ -\end_inset - - ( -\begin_inset Formula $m>n$ -\end_inset - -). - Řeší se taková úloha: -\end_layout - -\begin_layout Standard -\begin_inset Formula -\[ -\min\{||Ax-b||_{p}\mid x\in\mathbb{R}\}. -\] - -\end_inset - - -\end_layout - -\begin_layout Subsection* -Dualita -\end_layout - -\begin_layout Standard -Každá úloha LP má svojí duální úlohu, kterou lze dostat následující konstrukcí. - Z duální úlohy lze poté tím samým postupem dostat primární. - Popíšu jenom konstukci ze speciálního tvaru, více ve skriptech (s. - 95): -\end_layout - -\begin_layout Standard -\begin_inset Formula -\[ -\begin{array}{cccc} -\min & \sum_{j}c_{j}x_{j} & \max & \sum_{i}y_{i}b_{i}\\ -z.p. & \sum_{j}a_{ij}x_{j}\geq b_{i} & z.p. & y_{i}\geq\mathbb{R}\\ - & x_{j}\geq0 & & \sum_{i}y_{i}a_{ij}\leq c_{j} -\end{array} -\] - -\end_inset - - -\end_layout - -\begin_layout Standard -přehledněji: -\end_layout - -\begin_layout Standard -\begin_inset Formula -\[ -\begin{array}{cccc} -\min & c^{T}x & \max & y^{T}b\\ -z.p. & Ax\geq b & z.p. & y_{i}\geq\mathbb{R}\\ - & x\geq0 & & y^{T}A\leq c^{T} -\end{array} -\] - -\end_inset - - -\end_layout - -\begin_layout Standard -U vět budeme postupovat přesně opačně, než jak je tomu ve skriptech: -\end_layout - -\begin_layout Standard -Důležitá je zejména silná věta o dualitě která říká, že když se -\begin_inset Formula $c^{T}x=y^{T}b$ -\end_inset - - (kritéria) pro přípustná -\begin_inset Formula $x$ -\end_inset - -, -\begin_inset Formula $y$ -\end_inset - - ( -\begin_inset Formula $Ax\geq b$ -\end_inset - - atd.), pak jsou -\begin_inset Formula $x$ -\end_inset - - i -\begin_inset Formula $y$ -\end_inset - - optimálními řešeními obou úloh. -\end_layout - -\begin_layout Standard -Přitom platí (věta o slabé dualitě), že -\begin_inset Formula $c^{T}x\geq y^{T}b$ -\end_inset - - pro jakékoli přípustné -\begin_inset Formula $x$ -\end_inset - -, -\begin_inset Formula $y$ -\end_inset - -; protože -\begin_inset Formula $y^{T}A\leq c^{T}$ -\end_inset - - vynásobeno zprava -\begin_inset Formula $x\geq0$ -\end_inset - - rovná se -\begin_inset Formula $y^{T}Ax\leq c^{T}x$ -\end_inset - - (a stejně tak pro x), takže napsáno v řadě -\begin_inset Formula $c^{T}x\geq y^{T}Ax\geq y^{T}b$ -\end_inset - -. -\end_layout - -\begin_layout Standard -Věta o komplementaritě udává podmínky, kdy ( -\begin_inset Formula $\Leftrightarrow$ -\end_inset - -) se -\begin_inset Formula $c^{T}x=y^{T}b$ -\end_inset - -, více ve skriptech na s. - 96. -\end_layout - -\begin_layout Standard -Dualita je dobrá k: -\end_layout - -\begin_layout Itemize -lepšímu pochopení problému -\end_layout - -\begin_layout Itemize -ověření optimality -\end_layout - -\begin_layout Itemize -někdy lze jednodušeji spočítat duální úlohu a z ní řešení primární, než - rovnou primární. -\end_layout - -\begin_layout Standard -Takhle shrnuto to snad stačí. -\end_layout - -\begin_layout Section -Simplexový algoritmus -\end_layout - -\begin_layout Standard -Řeší úlohu lineárnho programování ve standatdním tvaru -\begin_inset Formula $\min\{c^{T}x-d\mid Ax=b,\: x>0\}$ -\end_inset - -. -\end_layout - -\begin_layout Subsection -Části algoritmu -\end_layout - -\begin_layout Subsubsection -Přechod k sousední bázi -\end_layout - -\begin_layout Standard -Co nejjednodušeji: máme soustavu -\begin_inset Formula $[A\mid b]$ -\end_inset - - tak, že v -\begin_inset Formula $m$ -\end_inset - - -\emph on -bázových -\emph default - sloupcích jedna jednička a samé nuly a na každém řádku je alepoň jedna - jednička. -\begin_inset Formula -\[ -\begin{array}{ccccccc} -5 & 0 & 0 & -1 & 1 & \mid & 3\\ -3 & 0 & 1 & 2 & 0 & \mid & 5\\ --1 & 1 & 0 & 2 & 0 & \mid & -2 -\end{array} -\] - -\end_inset - - -\end_layout - -\begin_layout Standard -Chceme přejít k sousední bázi, která bude mít jeden jiný bázový sloupec, - to znamená, že jestliže jsou teď báze sloupce 2, 3, 5, pak příště to bude - například 1, 3, 5 nebo 2, 3, 4. -\end_layout - -\begin_layout Standard -Zvolme pivot -\begin_inset Formula $a_{ij}$ -\end_inset - - (níže) a vydělme řádek -\begin_inset Formula $i$ -\end_inset - - -\begin_inset Formula $a_{ij}$ -\end_inset - - (dostaneme na místo pivotu jedničku). - Dále pomocí násobků ostatních řádků vynulujeme prvky ve sloupcích s bázemi - (jako v GEM). - Zbylé báze mají ve sloupci jedničku, takže to jde dobře. -\end_layout - -\begin_layout Subsubsection -Přípustné bázové řešení -\end_layout - -\begin_layout Standard -Protože nenulové složky bázového řešení jsou rovny složkám vektoru -\begin_inset Formula $b$ -\end_inset - -, je bázové řešení přípustné tehdy, když -\begin_inset Formula $b\geq0$ -\end_inset - -. - Pakliže teď máme přípustné řešení, k tomuto nedojde když -\begin_inset Formula $a_{ij}\geq0$ -\end_inset - - kde -\begin_inset Formula $a_{ij}$ -\end_inset - - je pivot a pro každé -\begin_inset Formula $i'\neq i$ -\end_inset - - platí -\begin_inset Formula $a_{i'j}\leq0$ -\end_inset - - nebo -\begin_inset Formula $b_{i}/a_{ij}\leq b_{i'}/a_{i'j}$ -\end_inset - - -\end_layout - -\begin_layout Subsubsection -Nekladný sloupec -\end_layout - -\begin_layout Standard -Pakliže jeden z nebázových sloupců obsahuje jen nekladné prvky, leží optimum - v -\begin_inset Formula $-\infty$ -\end_inset - - - úloha je neomezená. -\end_layout - -\begin_layout Subsubsection -Úpravy účelového řádku -\end_layout - -\begin_layout Standard -Simplexová tabulka: -\end_layout - -\begin_layout Standard -\begin_inset Formula -\[ -\left[\begin{array}{cc} -c & d\\ -A & b -\end{array}\right] -\] - -\end_inset - - -\end_layout - -\begin_layout Standard -Přičtení jakékoli lineární kombinace z -\begin_inset Formula $[A\: d]$ -\end_inset - - k -\begin_inset Formula $[c\: d]$ -\end_inset - - zachová hodnotu účelové funkce. -\end_layout - -\begin_layout Subsection -Algoritmus -\end_layout - -\begin_layout Enumerate -Vyber pivot (kde výběrem -\begin_inset Formula $j\in\mathrm{argmin}\: c_{j}$ -\end_inset - - se zajistí, že účelová funkce nestoupne). - -\begin_inset Formula $i$ -\end_inset - - se vybírá například -\begin_inset Formula $\mathrm{argmin}\: b_{i}/a_{ij}$ -\end_inset - -. -\end_layout - -\begin_layout Enumerate -Udělej ekvivalentní úpravu. -\end_layout - -\begin_layout Enumerate -Vynuluj -\begin_inset Formula $c_{j}$ -\end_inset - - pro bázová -\begin_inset Formula $j$ -\end_inset - -. -\end_layout - -\begin_layout Enumerate -Končíme, když všechny koeficienty -\begin_inset Formula $c_{j}$ -\end_inset - - jsou nezáporné (optimum) nebo když máme nekladný sloupec (neomezená úloha). -\end_layout - -\begin_layout Section -Něco o tom zbytku -\end_layout - -\begin_layout Standard -Konvexní množinu tvoří konvexní kombinace vektorů (je definována tak, že - je uzavřená na konvexní kombinace). - Konvexní kombinace je současně affinní a nezáporná kombinace: -\begin_inset Formula $\sum_{k}\alpha\geq1\wedge\forall k[\alpha_{k}\geq0]$ -\end_inset - -. -\end_layout - -\begin_layout Standard -Konvexní polyedr je definován jako průnik konečně mnoha poloprostorů (H-reprezen -tace (half-space)). - Extrémní body jsou vrcholy polyedru a jejich specifikem je to, že je lze - dostat právě jednou konvexní kombinací. - Reprezentovat jde ještě jako konvexní obal konečně mnoha vektorů (V-reprezentac -e (vertex)). -\end_layout - -\begin_layout Standard -Funkce je konvexní právě tehdy, když -\begin_inset Formula $f(\alpha x+(1-\alpha y))=\alpha f(x)-(1-\alpha)f(y)$ -\end_inset - -. -\end_layout - -\begin_layout Standard -Konvexní optimalizační úlohu řešíme tehdy, když je účelová funkce konvexní. - Nejdůležitější je, že nalezené (lokální) minimum je vždy zároveň globální. - Například u simplexové metody postupujeme po vrcholech konvexního polyedru - k tomu nejnižšímu. - K konvexním optimalizačním úlohám patří LP a QP (qudratic, také vytváří - konvexní množiny). -\end_layout - -\end_body -\end_document +#LyX 2.0 created this file. For more info see http://www.lyx.org/ +\lyxformat 413 +\begin_document +\begin_header +\textclass article +\use_default_options true +\maintain_unincluded_children false +\language english +\language_package default +\inputencoding auto +\fontencoding global +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 + +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry false +\use_amsmath 1 +\use_esint 1 +\use_mhchem 1 +\use_mathdots 1 +\cite_engine basic +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\use_refstyle 1 +\index Index +\shortcut idx +\color #008000 +\end_index +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\paragraph_indentation default +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Title +Otázka číslo 33 (A4B33OPT) +\end_layout + +\begin_layout Author +Martin Stránský +\end_layout + +\begin_layout Standard +\begin_inset Quotes eld +\end_inset + +Snažili jsme se udělat to co nejlépe, ale dopadlo to jako vždycky. +\begin_inset Quotes erd +\end_inset + + +\end_layout + +\begin_layout Section +Lineární programování +\end_layout + +\begin_layout Standard +Linieární programování znamená řešení úlohy minimalizace lineární funkce + +\begin_inset Formula $f=c^{T}x$ +\end_inset + + ( +\begin_inset Formula $+d)$ +\end_inset + + za podmínek affinních funkcí +\begin_inset Formula $g_{i}$ +\end_inset + +, +\begin_inset Formula $h_{i}$ +\end_inset + + (affinita viz níže). +\end_layout + +\begin_layout Standard +Slouží například k řešení úloh (viz skripta): +\end_layout + +\begin_layout Itemize +optimální výrobní program (z různých druhů surovin vyrábíme různé druhy + zboží s různou cenou) +\end_layout + +\begin_layout Itemize +směšovací problém (kuchařka má uvařit oběd, aby v něm bylo +\begin_inset Formula $b_{1}$ +\end_inset + + vitamínů, +\begin_inset Formula $b_{2}$ +\end_inset + + bílkovin a +\begin_inset Formula $b_{3}$ +\end_inset + + tuků) +\end_layout + +\begin_layout Itemize +distribuční problém +\end_layout + +\begin_layout Itemize +dopravní problém +\end_layout + +\begin_layout Itemize +hledání rovnovážných stavů u lineárních systémů a pod. +\end_layout + +\begin_layout Standard +Obecná formulace úlohy LP: +\end_layout + +\begin_layout Standard +\begin_inset Formula +\[ +\begin{array}{ccc} +\min\:(\max) & c_{1}x_{1}+c_{2}x_{2}+\ldots c_{1}x_{n}\\ +z.p. & a_{i1}x_{1}+\ldots+a_{in}x_{n}\geq b_{i} & i\in I_{+}\\ + & a_{i1}x_{1}+\ldots+a_{in}x_{n}\leq b_{i} & i\in I_{-}\\ + & a_{i1}x_{1}+\ldots+a_{in}x_{n}=b_{i} & i\in I_{0}\\ + & x_{j}\geq0 & j\in J_{+}\\ + & x_{j}\leq0 & j\in J_{-}\\ + & x_{j}\in\mathbb{R} & j\in J_{0} +\end{array} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Obecnou formulaci převádíme na standardní tvar +\end_layout + +\begin_layout Standard +\begin_inset Formula +\[ +\begin{array}{ccc} +\min & c_{1}x_{1}+c_{2}x_{2}+\ldots c_{1}x_{n}\\ +z.p. & a_{i1}x_{1}+\ldots+a_{in}x_{n}=b_{i} & i=1,\ldots,m\\ + & x_{j}\geq0 & j=1,\ldots,n +\end{array} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +zkráceně +\begin_inset Formula +\[ +\min\{c^{T}x\mid Ax=b,\: x>0\} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +a zpět následovně: +\end_layout + +\begin_layout Itemize +Maximalizaci nahradíme minimalizací podle +\begin_inset Formula $\min_{x\in X}f(x)=-\max_{x\in X}(-f(x)).$ +\end_inset + + +\end_layout + +\begin_layout Itemize +( +\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}=b_{i}$ +\end_inset + + nahradíme +\begin_inset Formula $ $ +\end_inset + + +\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}\leq b_{i}$ +\end_inset + + a +\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}\geq b_{i}$ +\end_inset + +.) +\end_layout + +\begin_layout Itemize +\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}\leq b_{i}$ +\end_inset + + doplníme slackovou proměnnou +\family roman +\series medium +\shape up +\size normal +\emph off +\bar no +\strikeout off +\uuline off +\uwave off +\noun off +\color none + +\begin_inset Formula $u_{i}\geq0$ +\end_inset + +, +\family default +\series default +\shape default +\size default +\emph default +\bar default +\strikeout default +\uuline default +\uwave default +\noun default +\color inherit + +\family roman +\series medium +\shape up +\size normal +\emph off +\bar no +\strikeout off +\uuline off +\uwave off +\noun off +\color none + +\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}+u_{i}=b_{i}$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $a_{i1}x_{1}+\ldots+a_{in}x_{n}\geq b_{i}$ +\end_inset + + vynásobíme +\begin_inset Formula $-1$ +\end_inset + + a doplníme slackovou proměnnou +\family roman +\series medium +\shape up +\size normal +\emph off +\bar no +\strikeout off +\uuline off +\uwave off +\noun off +\color none + +\begin_inset Formula $u_{i}\geq0$ +\end_inset + +, +\family default +\series default +\shape default +\size default +\emph default +\bar default +\strikeout default +\uuline default +\uwave default +\noun default +\color inherit + +\family roman +\series medium +\shape up +\size normal +\emph off +\bar no +\strikeout off +\uuline off +\uwave off +\noun off +\color none + +\begin_inset Formula $-a_{i1}x_{1}-\ldots-a_{in}x_{n}+u_{i}=-b_{i}$ +\end_inset + +. +\end_layout + +\begin_layout Itemize +\begin_inset Formula $x_{i}\in\mathbb{R}$ +\end_inset + + převedeme na +\begin_inset Formula $x_{i}^{+}\geq0$ +\end_inset + +, +\begin_inset Formula $x_{i}^{-}\geq0$ +\end_inset + +, +\begin_inset Formula $x_{i}=x_{i}^{+}-x_{i}^{-}$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Příklad (vlastní): převedení z obecného tvaru na standardní. +\end_layout + +\begin_layout Standard +\begin_inset Formula +\[ +\begin{array}{cc} +\max & c^{T}x\\ +z.p. & a_{11}x_{1}+\ldots+a_{2n}x_{n}\geq b_{i}\\ + & a_{21}x_{1}+\ldots+a_{2n}x_{n}\leq b_{i}\\ + & a_{i1}x_{1}+\ldots+a_{in}x_{n}=b_{i}\\ + & x_{1},\ldots,x_{n}\geq0 +\end{array} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +se převede na +\begin_inset Formula +\[ +\begin{array}{ccc} +-\min & -c_{1}x_{1}\ldots-c_{n}x_{n}\\ +z.p. & -a_{11}x_{1}-\ldots-a_{2n}x_{n}+u_{1}=-b_{i}\\ + & a_{21}x_{1}+\ldots+a_{2n}x_{n}+u_{2}=b_{i}\\ + & a_{i1}x_{1}+\ldots+a_{in}x_{n}=b_{i} & i\in\left[3,m\right]\\ + & x_{1},\ldots,x_{n},u_{1},u_{2}\geq0 +\end{array} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Ještě poznámka k řešení přeurčených rovnic +\begin_inset Formula $Ax=b$ +\end_inset + +, +\begin_inset Formula $A\in\mathbb{R}^{m\times n}$ +\end_inset + + ( +\begin_inset Formula $m>n$ +\end_inset + +). + Řeší se taková úloha: +\end_layout + +\begin_layout Standard +\begin_inset Formula +\[ +\min\{||Ax-b||_{p}\mid x\in\mathbb{R}\}. +\] + +\end_inset + + +\end_layout + +\begin_layout Subsection* +Dualita +\end_layout + +\begin_layout Standard +Každá úloha LP má svojí duální úlohu, kterou lze dostat následující konstrukcí. + Z duální úlohy lze poté tím samým postupem dostat primární. + Popíšu jenom konstukci ze speciálního tvaru, více ve skriptech (s. + 95): +\end_layout + +\begin_layout Standard +\begin_inset Formula +\[ +\begin{array}{cccc} +\min & \sum_{j}c_{j}x_{j} & \max & \sum_{i}y_{i}b_{i}\\ +z.p. & \sum_{j}a_{ij}x_{j}\geq b_{i} & z.p. & y_{i}\geq\mathbb{R}\\ + & x_{j}\geq0 & & \sum_{i}y_{i}a_{ij}\leq c_{j} +\end{array} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +přehledněji: +\end_layout + +\begin_layout Standard +\begin_inset Formula +\[ +\begin{array}{cccc} +\min & c^{T}x & \max & y^{T}b\\ +z.p. & Ax\geq b & z.p. & y_{i}\geq\mathbb{R}\\ + & x\geq0 & & y^{T}A\leq c^{T} +\end{array} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +U vět budeme postupovat přesně opačně, než jak je tomu ve skriptech: +\end_layout + +\begin_layout Standard +Důležitá je zejména silná věta o dualitě která říká, že když se +\begin_inset Formula $c^{T}x=y^{T}b$ +\end_inset + + (kritéria) pro přípustná +\begin_inset Formula $x$ +\end_inset + +, +\begin_inset Formula $y$ +\end_inset + + ( +\begin_inset Formula $Ax\geq b$ +\end_inset + + atd.), pak jsou +\begin_inset Formula $x$ +\end_inset + + i +\begin_inset Formula $y$ +\end_inset + + optimálními řešeními obou úloh. +\end_layout + +\begin_layout Standard +Přitom platí (věta o slabé dualitě), že +\begin_inset Formula $c^{T}x\geq y^{T}b$ +\end_inset + + pro jakékoli přípustné +\begin_inset Formula $x$ +\end_inset + +, +\begin_inset Formula $y$ +\end_inset + +; protože +\begin_inset Formula $y^{T}A\leq c^{T}$ +\end_inset + + vynásobeno zprava +\begin_inset Formula $x\geq0$ +\end_inset + + rovná se +\begin_inset Formula $y^{T}Ax\leq c^{T}x$ +\end_inset + + (a stejně tak pro x), takže napsáno v řadě +\begin_inset Formula $c^{T}x\geq y^{T}Ax\geq y^{T}b$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Věta o komplementaritě udává podmínky, kdy ( +\begin_inset Formula $\Leftrightarrow$ +\end_inset + +) se +\begin_inset Formula $c^{T}x=y^{T}b$ +\end_inset + +, více ve skriptech na s. + 96. +\end_layout + +\begin_layout Standard +Dualita je dobrá k: +\end_layout + +\begin_layout Itemize +lepšímu pochopení problému +\end_layout + +\begin_layout Itemize +ověření optimality +\end_layout + +\begin_layout Itemize +někdy lze jednodušeji spočítat duální úlohu a z ní řešení primární, než + rovnou primární. +\end_layout + +\begin_layout Standard +Takhle shrnuto to snad stačí. +\end_layout + +\begin_layout Section +Simplexový algoritmus +\end_layout + +\begin_layout Standard +Řeší úlohu lineárnho programování ve standatdním tvaru +\begin_inset Formula $\min\{c^{T}x-d\mid Ax=b,\: x>0\}$ +\end_inset + +. +\end_layout + +\begin_layout Subsection +Části algoritmu +\end_layout + +\begin_layout Subsubsection +Přechod k sousední bázi +\end_layout + +\begin_layout Standard +Co nejjednodušeji: máme soustavu +\begin_inset Formula $[A\mid b]$ +\end_inset + + tak, že v +\begin_inset Formula $m$ +\end_inset + + +\emph on +bázových +\emph default + sloupcích jedna jednička a samé nuly a na každém řádku je alepoň jedna + jednička. +\begin_inset Formula +\[ +\begin{array}{ccccccc} +5 & 0 & 0 & -1 & 1 & \mid & 3\\ +3 & 0 & 1 & 2 & 0 & \mid & 5\\ +-1 & 1 & 0 & 2 & 0 & \mid & -2 +\end{array} +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Chceme přejít k sousední bázi, která bude mít jeden jiný bázový sloupec, + to znamená, že jestliže jsou teď báze sloupce 2, 3, 5, pak příště to bude + například 1, 3, 5 nebo 2, 3, 4. +\end_layout + +\begin_layout Standard +Zvolme pivot +\begin_inset Formula $a_{ij}$ +\end_inset + + (níže) a vydělme řádek +\begin_inset Formula $i$ +\end_inset + + +\begin_inset Formula $a_{ij}$ +\end_inset + + (dostaneme na místo pivotu jedničku). + Dále pomocí násobků ostatních řádků vynulujeme prvky ve sloupcích s bázemi + (jako v GEM). + Zbylé báze mají ve sloupci jedničku, takže to jde dobře. +\end_layout + +\begin_layout Subsubsection +Přípustné bázové řešení +\end_layout + +\begin_layout Standard +Protože nenulové složky bázového řešení jsou rovny složkám vektoru +\begin_inset Formula $b$ +\end_inset + +, je bázové řešení přípustné tehdy, když +\begin_inset Formula $b\geq0$ +\end_inset + +. + Pakliže teď máme přípustné řešení, k tomuto nedojde když +\begin_inset Formula $a_{ij}\geq0$ +\end_inset + + kde +\begin_inset Formula $a_{ij}$ +\end_inset + + je pivot a pro každé +\begin_inset Formula $i'\neq i$ +\end_inset + + platí +\begin_inset Formula $a_{i'j}\leq0$ +\end_inset + + nebo +\begin_inset Formula $b_{i}/a_{ij}\leq b_{i'}/a_{i'j}$ +\end_inset + + +\end_layout + +\begin_layout Subsubsection +Nekladný sloupec +\end_layout + +\begin_layout Standard +Pakliže jeden z nebázových sloupců obsahuje jen nekladné prvky, leží optimum + v +\begin_inset Formula $-\infty$ +\end_inset + + - úloha je neomezená. +\end_layout + +\begin_layout Subsubsection +Úpravy účelového řádku +\end_layout + +\begin_layout Standard +Simplexová tabulka: +\end_layout + +\begin_layout Standard +\begin_inset Formula +\[ +\left[\begin{array}{cc} +c & d\\ +A & b +\end{array}\right] +\] + +\end_inset + + +\end_layout + +\begin_layout Standard +Přičtení jakékoli lineární kombinace z +\begin_inset Formula $[A\: d]$ +\end_inset + + k +\begin_inset Formula $[c\: d]$ +\end_inset + + zachová hodnotu účelové funkce. +\end_layout + +\begin_layout Subsection +Algoritmus +\end_layout + +\begin_layout Enumerate +Vyber pivot (kde výběrem +\begin_inset Formula $j\in\mathrm{argmin}\: c_{j}$ +\end_inset + + se zajistí, že účelová funkce nestoupne). + +\begin_inset Formula $i$ +\end_inset + + se vybírá například +\begin_inset Formula $\mathrm{argmin}\: b_{i}/a_{ij}$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Udělej ekvivalentní úpravu. +\end_layout + +\begin_layout Enumerate +Vynuluj +\begin_inset Formula $c_{j}$ +\end_inset + + pro bázová +\begin_inset Formula $j$ +\end_inset + +. +\end_layout + +\begin_layout Enumerate +Končíme, když všechny koeficienty +\begin_inset Formula $c_{j}$ +\end_inset + + jsou nezáporné (optimum) nebo když máme nekladný sloupec (neomezená úloha). +\end_layout + +\begin_layout Section +Něco o tom zbytku +\end_layout + +\begin_layout Standard +Konvexní množinu tvoří konvexní kombinace vektorů (je definována tak, že + je uzavřená na konvexní kombinace). + Konvexní kombinace je současně affinní a nezáporná kombinace: +\begin_inset Formula $\sum_{k}\alpha\geq1\wedge\forall k[\alpha_{k}\geq0]$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Konvexní polyedr je definován jako průnik konečně mnoha poloprostorů (H-reprezen +tace (half-space)). + Extrémní body jsou vrcholy polyedru a jejich specifikem je to, že je lze + dostat právě jednou konvexní kombinací. + Reprezentovat jde ještě jako konvexní obal konečně mnoha vektorů (V-reprezentac +e (vertex)). +\end_layout + +\begin_layout Standard +Funkce je konvexní právě tehdy, když +\begin_inset Formula $f(\alpha x+(1-\alpha y))=\alpha f(x)-(1-\alpha)f(y)$ +\end_inset + +. +\end_layout + +\begin_layout Standard +Konvexní optimalizační úlohu řešíme tehdy, když je účelová funkce konvexní. + Nejdůležitější je, že nalezené (lokální) minimum je vždy zároveň globální. + Například u simplexové metody postupujeme po vrcholech konvexního polyedru + k tomu nejnižšímu. + K konvexním optimalizačním úlohám patří LP a QP (qudratic, také vytváří + konvexní množiny). +\end_layout + +\end_body +\end_document