Matematický model: Porovnání verzí

Z Kyberwiki
(Založena nová stránka s textem „'''<span id="k21"><span style="mso-bookmark:_Toc496507649">2.1<span style="mso-spacerun: yes"> </span>Vytváření matematických modelů</span></span>'''…“)
 
 
(Není zobrazena jedna mezilehlá verze od stejného uživatele.)
Řádek 1: Řádek 1:
'''<span id="k21"><span style="mso-bookmark:_Toc496507649">2.1<span style="mso-spacerun: yes"> </span>Vytváření matematických modelů</span></span>'''
+
<div style="color:#000000;margin-left:0cm;margin-right:0cm;"><span style="color:#0000ff;">'''2.2&nbsp;&nbsp;Simulace'''</span></div>
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
 
 +
{| style="border-spacing:0;width:17cm;"
 
|-
 
|-
| style="text-align: center;" width="170" bgcolor="#FFFFCC" valign="top"| Obsah kapitoly:
+
| style="background-color:#ffffcc;border:none;padding:0.049cm;" | Obsah kapitoly:
 +
| style="background-color:#ffffcc;border:none;padding:0.049cm;" | [https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-sim.htm#k221 2.2.1  Princip numerického řešení obyčejných diferenciálních rovnic]
  
| bgcolor="#FFFFCC" width="781"| [[#k211|2.1.1  Obecný postup vytváření deterministických matematických modelů]]
+
[https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-sim.htm#k222 2.2.2  Přesnost numerického řešení]
  
[[#k212|2.1.2  Vytváření matematických modelů na základě bilancí]]
+
[https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-sim.htm#k223 2.2.3  Stabilita numerického řešení]
  
[[#k213|2.1.3  Počáteční a okrajové podmínky]]
+
[https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-sim.htm#k224 2.2.4  Stanovení hodnot parametrů modelu]
  
[[#k214|2.1.4  Ukázkové příklady na vytváření matematických modelů]]
+
[https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-sim.htm#k225 2.2.5  Simulační programovací jazyky]
  
 +
[https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-sim.htm#k226 2.2.6  Příklady simulace]
 +
|-
 
|}
 
|}
 +
<div style="color:#000000;">&nbsp;</div>
  
+
<div style="color:#000000;">Simulací (pro účely matematického modelování) rozumíme řešení rovnic matematického modelu, přičemž měníme podle potřeby hodnoty vstupních signálů a&nbsp;parametrů a sledujeme jejich vliv na hodnoty výstupních signálů. U modelů dynamických systémů to znamená řešit diferenciální rovnice nebo jejich soustavy.&nbsp;Postupů analytického řešení známých z&nbsp;matematiky zde lze také použít, ale spíše v&nbsp;jednodušších případech. Většinou volíme řešení numerické. Navíc jsou k dispozici simulační jazyky, jejichž používání je většinou snadné a&nbsp;nevyžaduje příliš hluboké znalosti z&nbsp;programování a práce s&nbsp;počítačem. Abychom však dovedli výsledky správně interpretovat, je rozumné znát základní principy, na kterých je numerické řešení diferenciálních rovnic založeno, a je nutné vědět něco o přesnosti výsledků.</div>
  
Stav procesu je charakterizován hodnotami veličin, které jej popisují (tzv. stavové veličiny). Jsou to teplota, tlak, množství či koncentrace složek apod. Matematickým modelem procesu nebo zařízení rozumíme matematické vztahy mezi těmito veličinami, nejčastěji v závislosti na čase. Hovoříme pak o tzv. '''dynamice procesu'''. Matematickými vztahy jsou nejčastěji diferenciální rovnice (obyčejné i parciální) nebo jejich soustavy, ale také nelineární rovnice a jejich soustavy, soustavy lineárních rovnic apod. Pro účely automatického řízení se často užívá matematického popisu ve tvaru přenosové funkce, což má některé výhody, jak se dozvíme později.
+
<div style="color:#0000ff;margin-left:0cm;margin-right:0cm;">'''2.2.1&nbsp;&nbsp;Princip numerického řešení obyčejných diferenciálních rovnic'''</div>
  
Matematické modely můžeme podle způsobu vytváření rozdělit na dvě základní kategorie: modely stochastické a modely deterministické (nebo také fyzikální).
+
<div style="color:#000000;">Budeme hovořit o numerickém řešení obyčejných diferenciálních rovnic (ODR) 1.řádu s&nbsp;počáteční podmínkou, které jsou lineární (tj. derivace je v nich vždy v&nbsp;první mocnině). Princip řešení si ukážeme na nejjednodušší metodě Eulerově, ale je společný všem tzv. vícekrokovým metodám. Mějme diferenciální rovnici obecně zapsanou ve tvaru</div>
  
<span style="mso-spacerun: yes"> </span>'''Stochastické modely''' předpokládají, že modelovaný systém je „černá skříňka“ s definovanými vstupy a výstupy. Vytváříme je zhruba následujícím postupem :
 
  
* na základě předpokládaného chování systému zvolíme vhodný tvar matematického popisu (často to bývá přenosová funkce), který obsahuje parametry neznámých hodnot,
+
{| style="border-spacing:0;width:17cm;"
* <span style="font-family:Symbol"><span style="font:7.0pt &quot;Times New Roman&quot;"> </span></span>na vstup systému přivádíme proměnlivý signál (může být skutečný nebo uměle generovaný) a v pravidelných (krátkých) časových intervalech měříme hodnoty vstupního a výstupního signálu tak dlouho, až získáme dostatečně dlouhé řady odpovídajících dvojic hodnot,
+
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
* výsledky měření zpracujeme tak, abychom získali hodnoty parametrů zvoleného matematického popisu systému.
+
|| &nbsp;
 +
|| [[Image:Obrázek1.png|top]]
 +
|| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s počáteční podmínkou&nbsp;&nbsp;&nbsp;''y''(''t''0) =&nbsp;''y''0
 +
| align=right| (2.15)
 +
|-
 +
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">(<span style="background-color:#ccffff;">''t''</span>&nbsp;... čas, obecně nezávisle proměnná,&nbsp;<span style="background-color:#ccffff;">''y''</span>&nbsp;... závisle proměnná,&nbsp;<span style="background-color:#ccffff;">''g''</span>&nbsp;... funkční předpis, jehož tvar známe). Každou diferenciální rovnici 1.řádu na tento tvar můžeme převést osamostatněním derivace. Princip řešení spočívá v&nbsp;tom, že spojitý interval nezávisle proměnné na kterém hledáme řešení diskretizujeme, tj. rozdělíme jej na stejně velké díly o velikosti&nbsp;<span style="background-color:#ccffff;">''h''</span>, takže dostaneme řadu bodů&nbsp;&nbsp;<span style="background-color:#ccffff;">''t</span><span style="background-color:#ccffff;">i''</span>&nbsp;, pro něž platí</div>
  
<span style="mso-spacerun: yes">Tohoto postupu používáme tehdy, když nejsme schopni odvodit deterministický model, nebo při aplikaci některých speciálních algoritmů automatického číslicového řízení.</span>
 
  
<span style="mso-spacerun: yes"> '''Deterministické modely''' jsou odvozovány na základě analýzy a matematického popisu skutečné podstaty děje. Těmito modely se budeme podrobněji zabývat a shrneme hlavní zásady a postupy jejich vytváření.</span>
+
{| style="border-spacing:0;width:17cm;"
 +
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
 +
|| &nbsp;
 +
|| ''ti''+1&nbsp;=&nbsp;''ti''&nbsp;+&nbsp;''h''
 +
|| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pro&nbsp;&nbsp;''i''&nbsp;=&nbsp;&nbsp;0, 1, 2, ...
 +
| align=right| (2.16)
 +
|-
 +
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Hodnoty závisle proměnné v bodech&nbsp;<span style="background-color:#ccffff;">''t</span><span style="background-color:#ccffff;">i''</span>&nbsp;&nbsp;pak vypočteme z Eulerovy formule</div>
  
'''<span id="k211"><span style="mso-bookmark:_Toc496507650">2.1.1<span style="mso-spacerun: yes">  </span>Obecný postup vytváření deterministických matematických modelů</span></span>'''
 
  
Proces (systém), který chceme matematicky popsat, se řídí podle určitých fyzikálních, fyzikálně-chemických a chemických zákonů, které mají své matematické vyjádření. Z tohoto vyjádření zákonů při sestavování deterministických modelů vycházíme. Někdy takto můžeme popsat všechny zadané podmínky a vztahy modelovaného procesu úplně a získat tak přesný matematický model. Takový matematický model ale bývá tak složitý, že jeho řešení je prakticky neproveditelné. Navíc většinou ani úplný popis získat nemůžeme, protože průběh děje do potřebných podrobností neznáme. V praxi ale obvykle nepotřebujeme naprosto přesné výsledky, stačí, když model vystihuje podstatné vlastnosti a chování procesu. Můžeme si tedy dovolit některé méně podstatné vlivy a vztahy zanedbat nebo zjednodušit. Konečným kritériem kvality a použitelnosti modelu je vždy jeho souhlas s realitou v souladu s účelem ke kterému byl vytvořen. Na obr. 2.1<span style="mso-spacerun: yes"> </span>jsou schématicky znázorněny jednotlivé fáze vytváření deterministického modelu.
+
{| style="border-spacing:0;width:17cm;"
 +
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
 +
|| &nbsp;
 +
|| [[Image:Obrázek2.png|top]]
 +
|| &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pro&nbsp; i =&nbsp; 0, 1, 2, ...
 +
| align=right| (2.17)
 +
|-
 +
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">kde hodnota&nbsp;<span style="background-color:#ccffff;">''Y</span><span style="background-color:#ccffff;">i''</span><span style="background-color:#ccffff;">+1</span>&nbsp; je přibližně rovna hledanému řešení&nbsp;&nbsp;<span style="background-color:#ccffff;">''y''</span><span style="background-color:#ccffff;">(</span><span style="background-color:#ccffff;">''t</span><span style="background-color:#ccffff;">i''</span><span style="background-color:#ccffff;">+1</span><span style="background-color:#ccffff;">)</span>, přičemž na počátku&nbsp;<span style="background-color:#ccffff;">''Y''</span><span style="background-color:#ccffff;">0</span>&nbsp;=&nbsp;<span style="background-color:#ccffff;">''y''</span><span style="background-color:#ccffff;">0</span>&nbsp;.</div>
  
{| class="wikitable" border="0" width="100%" cellspacing="0" cellpadding="0"
+
 
 +
{| style="border-spacing:0;width:17cm;"
 
|-
 
|-
| width="5%"|
+
| style="border:none;padding:0.049cm;" | [[Image:Obrázek3.png|left|top]]
| style="text-align: center;" width="85%"| [[File:F2K21-o21.gif|379x400px]]
+
| style="border:none;padding:0.049cm;" | Pro názornost je užitečný grafický výklad principu Eulerovy metody, který je vidět na obr.2.2. Metoda vychází z&nbsp;náhrady průběhu analytického řešení na úseku mezi dvěma sousedními body&nbsp;<span style="background-color:#ccffff;">''t</span><span style="background-color:#ccffff;">i''</span>&nbsp;,&nbsp;<span style="background-color:#ccffff;">''t</span><span style="background-color:#ccffff;">i''</span><span style="background-color:#ccffff;">+1</span>&nbsp;přímkou. V&nbsp;počátečním bodě&nbsp;<span style="background-color:#ccffff;">(</span><span style="background-color:#ccffff;">''t''</span><span style="background-color:#ccffff;">0</span><span style="background-color:#ccffff;">,&nbsp;</span><span style="background-color:#ccffff;">''y''</span><span style="background-color:#ccffff;">0</span><span style="background-color:#ccffff;">)</span>&nbsp;jsme schopni vypočíst hodnotu pravé strany rovnice (2.13)&nbsp;<span style="background-color:#ccffff;">''g''</span><span style="background-color:#ccffff;">(</span><span style="background-color:#ccffff;">''t''</span><span style="background-color:#ccffff;">0</span><span style="background-color:#ccffff;">,&nbsp;</span><span style="background-color:#ccffff;">''y''</span><span style="background-color:#ccffff;">0</span><span style="background-color:#ccffff;">)</span>, tedy vlastně hodnotu derivace&nbsp;<span style="background-color:#ccffff;">''dy''</span><span style="background-color:#ccffff;">/</span><span style="background-color:#ccffff;">''dt''</span>&nbsp;(směrnice tečny). Vzorec (2.17) pak udává, že bod&nbsp;<span style="background-color:#ccffff;">(</span><span style="background-color:#ccffff;">''t''</span><span style="background-color:#ccffff;">1</span><span style="background-color:#ccffff;">,&nbsp;</span><span style="background-color:#ccffff;">''Y''</span><span style="background-color:#ccffff;">1</span><span style="background-color:#ccffff;">)</span>&nbsp;získáme jako průsečík tečny v&nbsp;počátečním bodě a&nbsp;pořadnice&nbsp;<span style="background-color:#ccffff;">''t''</span><span style="background-color:#ccffff;">1</span>. Takto získaný bod&nbsp;<span style="background-color:#ccffff;">(</span><span style="background-color:#ccffff;">''t''</span><span style="background-color:#ccffff;">1</span><span style="background-color:#ccffff;">,&nbsp;</span><span style="background-color:#ccffff;">''Y''</span><span style="background-color:#ccffff;">1</span><span style="background-color:#ccffff;">)</span>&nbsp;můžeme nyní považovat za počáteční a&nbsp;postup opakovat. Můžeme tak postupně získat body&nbsp;<span style="background-color:#ccffff;">(</span><span style="background-color:#ccffff;">''t''</span><span style="background-color:#ccffff;">2</span><span style="background-color:#ccffff;">,&nbsp;</span><span style="background-color:#ccffff;">''Y''</span><span style="background-color:#ccffff;">2</span><span style="background-color:#ccffff;">)</span>&nbsp;,&nbsp;<span style="background-color:#ccffff;">(</span><span style="background-color:#ccffff;">''t''</span><span style="background-color:#ccffff;">3</span><span style="background-color:#ccffff;">,&nbsp;</span><span style="background-color:#ccffff;">''Y''</span><span style="background-color:#ccffff;">3</span><span style="background-color:#ccffff;">)</span>&nbsp;atd. až do konce intervalu&nbsp;<span style="background-color:#ccffff;">''t''</span>&nbsp; na němž hledáme řešení. Výsledkem numerického řešení diferenciální rovnice není tedy vzorec jako u&nbsp;řešení analytického, ale tabulka bodů
  
| width="10%"|
+
(''ti'',&nbsp;''Yi'') ,&nbsp;&nbsp;&nbsp;''i''&nbsp;= 0, 1, 2,...
 +
|- style="border:none;padding:0.049cm;"
 +
| align=center style="color:#800000;" | ''Obr.2.2&nbsp; Princip Eulerovy metody''
 
|-
 
|-
| width="5%"|
 
| style="text-align: center;" width="85%"| ''Obr.2.1 Postup vytváření matematického modelu''
 
| width="10%"|
 
 
|}
 
|}
 +
<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#000000;">Postup řešení (kreslení tohoto obrázku) je možné si prohlédnout&nbsp;</span>[https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-Eugr0.htm zde]<span style="color:#000000;">.</span></div>
  
'''První fází''' je důkladná <u>analýza procesu</u>, při níž musíme provést následující kroky:
+
<div style="color:#000000;">Na stejném principu je založeno řešení soustavy ODR 1.řádu s&nbsp;počátečními podmínkami. Soustava obecně k diferenciálních rovnic má&nbsp; k&nbsp; závisle proměnných a jednu společnou nezávisle proměnnou. Rovnici (2.15) si můžeme představit zapsanou vektorově</div>
  
'''a)'''<span style="font:7.0pt &quot;Times New Roman&quot;">      </span>specifikujeme děje, které v procesu probíhají a určíme jejich podstatu,
 
  
'''b)'''<span style="font:7.0pt &quot;Times New Roman&quot;">      </span>vymezíme vlivy, které na proces a jeho průběh působí,
+
{| style="border-spacing:0;width:17cm;"
 
+
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
<span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">'''c)'''<span style="font:7.0pt &quot;Times New Roman&quot;">      </span>určíme veličiny, které proces popisují,</span>
+
|| &nbsp;
 
+
|| [[Image:Obrázek4.png|top]]
<span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">'''d)'''<span style="font:7.0pt &quot;Times New Roman&quot;">      </span>o každém z výše uvedených prvků rozhodneme, zda jej budeme považovat za podstatný a do modelu jej zahrneme, či nikoliv,</span>
+
|| [[Image:Obrázek5.png|top]]
 
+
| align=right| (2.18)
<span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">'''e)'''<span style="font:7.0pt &quot;Times New Roman&quot;">      </span>o každém z výše uvedených prvků zahrnutých do modelu rozhodneme, zda jej budeme brát v úvahu v celé šíři a ve všech souvislostech, nebo zda použijeme nějaká zjednodušení.</span>
 
 
 
Výsledkem popsaného postupu je tzv. '''teoretický model'''. Ten sice nepopisuje zcela přesně skutečnost, ale<span style="mso-bidi-font-family:
 
Arial"> jeho výhoda spočívá v jednoduchosti, přehlednosti a následně i ve snazším řešení výsledných rovnic.</span>
 
 
 
V bodu e) se hovoří o zjednodušování některých vztahů při tvorbě teoretického modelu. Je to je velmi důležitý krok, který musíme vždy provádět a navíc má podstatný vliv na kvalitu výsledného modelu. Uvádíme proto výčet <u>nejpoužívanějších zjednodušujících předpokladů</u>:
 
 
 
<blockquote>* <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">rozdělujeme složitý systém na jednodušší subsystémy a zpracováváme je odděleně, ovšem se zřetelem na jejich vzájemné souvislosti,</span>
 
* <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">zavádíme neexistující formy, např. ideální plyn, ideální kapalina,</span>
 
* <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">předpokládáme nezávislost látkových vlastností na teplotě,</span>
 
* <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">předpokládáme, že materiál je homogenní a isotropní,  </span>
 
* <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">u systémů, kde probíhají současně pomalé a rychlé děje, předpokládáme, že rychlý děj již dosáhl rovnovážného stavu,</span>
 
* <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">zanedbáváme ztráty,  </span>
 
* <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">nelineární závislosti linearizujeme,</span>
 
* <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">zavádíme různé korekční (obvykle empirické) koeficienty,</span>
 
* <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">používáme empiricky zjištěných vztahů a závislostí mezi veličinami,</span>
 
* <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">zjednodušujeme geometrické proporce a volíme vhodné souřadnicové soustavy, abychom mohli co nejjednodušeji popsat geometrii systému,</span>
 
* <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">zaváděním některých předpokladů odstraňujeme závislost sledovaných veličin na souřadnicích - získáváme tím tzv. modely se soustředěnými parametry.</span>
 
</blockquote>
 
Ve '''druhé fázi''' postupu sestavujeme na základě teoretického modelu <u>matematický popis procesu</u>. Znamená to provést následující kroky:
 
 
 
<span style="font-size:11.0pt;
 
mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">'''a)'''<span style="font:7.0pt &quot;Times New Roman&quot;">    </span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">výběr matematického popisu zákonitostí použitých v teoretickém modelu,  </span>
 
 
 
<span style="font-size:11.0pt;
 
mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">'''b)'''<span style="font:7.0pt &quot;Times New Roman&quot;">    </span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">vytvoření modelových rovnic, tj. doplnění vybraných vztahů o zjednodušující předpoklady a potřebné matematické úpravy,</span>
 
 
 
<span style="font-size:11.0pt;
 
mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">'''c)'''<span style="font:7.0pt &quot;Times New Roman&quot;">    </span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">určení podmínek řešení (obvykle počáteční a okrajové podmínky pro řešení diferenciálních rovnic).</span>
 
 
 
<span id="k21-vzt"></span>V této fázi obvykle využíváme [[F2k21-mod-vzt.htm#k2-pril|matematických rovnic vyjadřujících známé zákony a vztahy]] z fyziky, fyzikální chemie, chemie atd. Výsledkem tohoto postupu je '''obecný matematický model procesu'''. Může se však také stát, že náš teoretický model matematicky popsat nedokážeme; potom musíme buď změnit teoretický model (zavést jiné nebo další předpoklady), nebo v krajním případě musíme použít vhodných experimentálních postupů a jejich vyhodnocením získat náhradní popis děje (např. stochastický model).
 
 
 
'''Třetí fází''' celého postupu je řešení modelu, to znamená vytvoření '''simulačního programu'''. Představuje to provést tyto kroky:
 
 
 
<span style="font-size:11.0pt;
 
mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">'''a)'''<span style="font:7.0pt &quot;Times New Roman&quot;">    </span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">volbu metody řešení modelových rovnic,</span>
 
 
 
<span style="font-size:11.0pt;
 
mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">'''b)'''<span style="font:7.0pt &quot;Times New Roman&quot;">    </span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">zpracování modelových rovnic pro řešení na počítači, tj. nalezení vhodného algoritmu řešení,</span>
 
 
 
<span style="font-size:11.0pt;
 
mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">'''c)'''<span style="font:7.0pt &quot;Times New Roman&quot;">    </span></span><span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
 
mso-bidi-font-family:Arial">sestavení výpočetního programu, nejlépe s využitím vhodného simulačního jazyka.</span>
 
 
 
'''Čtvrtou fází''' je vytvoření tzv. '''simulačního modelu'''. Jejím výsledkem je počítačový program vhodný pro používání v praxi. Tato fáze zahrnuje následující kroky:
 
 
 
<span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">'''a)'''<span style="font:7.0pt &quot;Times New Roman&quot;">      </span>identifikace modelu, tj. nalezení neznámých hodnot parametrů modelu (např. porovnáním získaných výsledků řešení s údaji z literatury, s experimentálními hodnotami apod.),  </span>
 
 
 
<span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">'''b)'''<span style="font:7.0pt &quot;Times New Roman&quot;">      </span>verifikace modelu, tj. řešení kontrolních úloh a analýza jejich výsledků za účelem ověření správnosti modelu v celé předpokládané oblasti použití, posouzení přesnosti a vhodnosti modelu pro daný účel.  </span>
 
 
 
<span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">Pokud model vyhovuje, práci jsme úspěšně dokončili a můžeme modelu používat. Jestliže nevyhovuje, musíme zjistit, v čem jsme se dopustili chyby, který</span> <span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;mso-bidi-font-family:Arial">předpoklad byl neoprávněný, které zjednodušení nepřípustné, který vliv jsme opominuli nebo neoprávněně zanedbali. Musíme zformulovat nový teoretický model a celý postup znovu zopakovat.</span>
 
 
 
Je zřejmé, že tvorba matematického modelu není nijak jednoduchou záležitostí. Má však jednu velkou přednost: přinutí nás důkladně si ujasnit podstatu a mechanismus studovaného děje.
 
 
 
Na závěr bychom rádi zdůraznili jednu velmi důležitou zásadu: je třeba začínat vždy od teoretických modelů maximálně jednoduchých a komplikovat je teprve tehdy, když výsledky nevyhovují našim představám a požadavkům nebo praktickým zkušenostem.
 
 
 
 
 
 
{| class="wikitable" border="0" width="100%" cellspacing="0"
 
 
|-
 
|-
| style="text-align: center;" width="170" bgcolor="#66FF33"| [[#k21|na začátek kapitoly]]
 
|
 
| width="170"|
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">kde je&nbsp;<span style="background-color:#ccffff;"><u>''y''</u></span>&nbsp;vektor závisle proměnných,&nbsp;<span style="background-color:#ccffff;"><u>''y'''</u></span>&nbsp;vektor derivací závisle proměnných avektor funkcí (pravých stran po osamostatnění derivací). Stejně tak můžeme vektorově zapsat Eulerovu formuli</div>
  
 
 
'''<span id="k212"><span style="mso-bookmark:_Toc496507651">2.1.2<span style="mso-spacerun: yes">  </span>Vytváření matematických modelů na základě bilancí</span></span>'''
 
  
Bilancemi rozumíme aplikaci zákonů o zachování na daný systém. Jejich využití při vytváření matematických modelů je velice časté - odhaduje se, že je to 70 až 80 % případů. Bilancovat lze jen tzv. extenzivní veličiny. V praxi se jedná nejčastěji o zákony o zachování hmoty a energie - hovoříme pak o látkových a energetických bilancích.
+
{| style="border-spacing:0;width:17cm;"
 
+
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
Chceme-li se zabývat bilancováním, musíme si nejprve vyjasnit některé základní pojmy. Je to především bilancovaný systém. Rozumíme jím nějakou (nejčastěji prostorovou) oblast, která má definované hranice (rozhraní) s okolím. Okolí je tedy to, co systém obklopuje. Další pojem je bilanční časový interval, což je časový úsek, během kterého bilancované veličiny sledujeme. Základní bilanční rovnice má tvar
+
|| &nbsp;
 
+
|| [[Image:Obrázek6.png|top]]
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
||
 +
| align=right| (2.19)
 
|-
 
|-
| width="5%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="85%" bgcolor="#CCFFFF" valign="middle"|  ''VSTUP + ZDROJ = VÝSTUP + AKUMULACE''
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.1)
 
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">takže vlastně dostaneme samostatný Eulerův vzorec pro každou závisle proměnnou a v každém kroku řešení vypočteme pro danou hodnotu nezávisle proměnné&nbsp;&nbsp;<span style="background-color:#ccffff;">''t''</span>&nbsp;&nbsp;hodnoty všech závisle proměnných podle těchto vzorců. Výsledkem je tabulka vyjadřující závislosti proměnných&nbsp;&nbsp;<span style="background-color:#ccffff;">''Y</span><span style="background-color:#ccffff;">i''</span><span style="background-color:#ccffff;">&nbsp;&nbsp;,&nbsp;&nbsp;</span><span style="background-color:#ccffff;">''i''</span><span style="background-color:#ccffff;"><nowiki>=1,&nbsp;2,...,&nbsp;</nowiki></span><span style="background-color:#ccffff;">''k''</span>&nbsp; na&nbsp;&nbsp;<span style="background-color:#ccffff;">''t''</span>.</div>
  
<span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial"><span style="text-transform: uppercase; background-color: #CCFFFF">''Vstup''</span>  je množství bilancované veličiny, které za bilanční časový interval vstoupí z okolí přes rozhraní do systému.</span>
+
<div style="color:#0000ff;margin-left:0cm;margin-right:0cm;">'''2.2.2&nbsp; Přesnost numerického řešení'''</div>
  
<span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial"><span style="text-transform: uppercase; background-color: #CCFFFF">''Výstup''</span> je množství bilancované veličiny, které za bilanční časový interval vystoupí ze systému přes rozhraní do okolí.</span>
+
<div style="color:#000000;">Numerické řešení diferenciální rovnice závisí nejen na nezávisle proměnné&nbsp;<span style="background-color:#ccffff;">''t''</span>&nbsp;, ale i na velikosti kroku&nbsp;<span style="background-color:#ccffff;">''h''</span>&nbsp;. Aby přibližné řešení&nbsp;<span style="background-color:#ccffff;">''Y''</span>&nbsp;odpovídalo analytickému (přesnému) řešení&nbsp;<span style="background-color:#ccffff;">''y''</span>&nbsp;, musí platit podmínka konvergence</div>
  
<span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial"><span style="text-transform: uppercase; background-color: #CCFFFF">''Zdroj''</span>  je množství bilancované veličiny, které za bilanční časový interval uvnitř systému vznikne nebo zanikne (rozumí se vznik z jiné, nebilancované veličiny, nebo změna na jinou, nebilancovanou veličinu).</span>
+
<div style="color:#000000;">[[Image:Obrázek7.png|top]]</div>
  
<span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial"><span style="text-transform: uppercase; background-color: #CCFFFF">''Akumulace''</span> je změna množství (zádrže) bilancované veličiny uvnitř systému za bilanční časový interval.</span>
+
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">tedy přesnost numerického řešení je tím větší, čím menší je krok&nbsp;<span style="background-color:#ccffff;">''h''</span>&nbsp;. U krokových metod vyjadřujeme přesnost resp. chybu metody pomocí mocniny&nbsp;<span style="background-color:#ccffff;">''h''</span>&nbsp;a&nbsp;hovoříme o&nbsp;metodě příslušného řádu. V případě Eulerovy metody je to přesnost 1.řádu&nbsp;<span style="background-color:#ccffff;">''h</span>.&nbsp;''Tento údaj nám slouží pouze k hrubému odhadu chyby, tedy např. je-li &nbsp;<span style="background-color:#ccffff;">''h&nbsp;=&nbsp;''</span><span style="background-color:#ccffff;">0.1</span>&nbsp;, dá se očekávat, že přesné bude první desetinné místo výsledku.</div>
  
Při bilancování musíme nejprve zvolit velikost bilančního časového intervalu. Volba je dána jednoduchým pravidlem:
 
  
* <span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial">pokud se bilance týká ustáleného stavu systému (tj. hodnoty veličin se s časem nemění), pak můžeme volit časový interval zcela libovolný, nejčastěji jednotkový,</span>
+
{| style="border-spacing:0;width:17cm;"
* <span style="font-size: 11.0pt; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: Arial">pokud chceme modelovat systém jako proměnný v čase (tzv. dynamický model), pak musíme volit bilanční časový interval infinitesimálně malý, tj. ''dt''.</span>
+
|-
 +
| style="border:none;padding:0.049cm;" | [[Image:Obrázek8.png|left|top]]
 +
| style="border:none;padding:0.049cm;" | O odhad se jedná především proto, že chyba závisí nejen na velikosti kroku, ale i na tvaru funkce v okolí právě počítaného bodu. Z&nbsp;toho logicky vyplývá, že chyba numerického řešení se může v jeho jednotlivých částech (pro různá&nbsp;<span style="background-color:#ccffff;">''t''</span>) lišit. Na obr.&nbsp;2.2 jsou chyby numerického řešení v&nbsp;bodech&nbsp;<span style="background-color:#ccffff;">''t''</span><span style="background-color:#ccffff;">1</span><span style="background-color:#ccffff;">&nbsp;</span>a&nbsp;<span style="background-color:#ccffff;">''t''</span><span style="background-color:#ccffff;">2</span><span style="background-color:#ccffff;">&nbsp;</span>označeny jako&nbsp;<span style="background-color:#ccffff;">D</span><span style="background-color:#ccffff;">1</span><span style="background-color:#ccffff;">&nbsp;</span>a&nbsp;<span style="background-color:#ccffff;">D</span><span style="background-color:#ccffff;">2</span>. Tato chyba je chyba metody a&nbsp;protože souvisí s&nbsp;diskretizací nezávisle proměnné, říká se jí&nbsp;<u>chyba diskretizační</u>. Při numerickém řešení se však do výpočtů vnáší ještě další chyba související se skutečností, že výpočetní prostředek (počítač) pracuje pouze na omezený počet platných míst. Tato chyba souvisí také s velikostí kroku&nbsp;<span style="background-color:#ccffff;">''h''</span>, protože v&nbsp;rovnici (2.17) může docházet při násobení hodnoty funkce&nbsp;&nbsp;<span style="background-color:#ccffff;">''g''</span>&nbsp;&nbsp;krokem&nbsp;&nbsp;<span style="background-color:#ccffff;">''h''</span>&nbsp;&nbsp;ke&nbsp;značným řádovým posunům. Je to&nbsp;<u>chyba zaokrouhlovací</u>&nbsp;a její velikost je tím větší, čím menší je krok&nbsp;<span style="background-color:#ccffff;">''h''</span>.&nbsp;&nbsp;Celková chyba je pak součtem obou, jak je znázorněno na obr.&nbsp;2.3.
 +
|- style="border:none;padding:0.049cm;"
 +
| align=center style="color:#800000;" | ''Obr.2.3&nbsp; Chyba Eulerovy metody''
 +
|-
 +
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Diskretizační chyba u&nbsp;Eulerovy metody závisí na kroku lineárně, ale obecně tomu tak není. Zmíněné dvě chyby působí proti sobě. Abychom zjistili&nbsp;'''skutečnou chybu numerického řešení konkrétní rovnice'''&nbsp;(a&nbsp;to v praxi obvykle potřebujeme), musíme postupovat empiricky následujícím způsobem:</div># <div style="color:#000000;margin-left:0.635cm;margin-right:0cm;">podle požadované přesnosti a řádu přesnosti zvolené metody numerického řešení ODR odhadneme potřebnou velikost kroku&nbsp;<span style="background-color:#ccffff;">''h''</span>,</div>
 +
# <div style="color:#000000;margin-left:0.635cm;margin-right:0cm;">nalezneme řešení s tímto zvoleným krokem,</div>
 +
# <div style="color:#000000;margin-left:0.635cm;margin-right:0cm;">krok zmenšíme, např. na polovinu,</div>
 +
# <div style="color:#000000;margin-left:0.635cm;margin-right:0cm;">nalezneme řešení se zmenšeným krokem,</div>
 +
# <div style="color:#000000;margin-left:0.635cm;margin-right:0cm;">hodnoty závisle proměnné z obou řešení ve stejných bodech nezávisle proměnné porovnáme a&nbsp;předpokládáme, že správné jsou ty dekadické řády výsledků, které se u&nbsp;obou řešení neliší,</div>
 +
# <div style="color:#000000;margin-left:0.635cm;margin-right:0cm;">pokud nejsme se získanou přesností spokojeni, krok dále zmenšíme a porovnáváme vždy výsledky dvou posledních kroků; to děláme tak dlouho, až nám přesnost vyhovuje.</div>
  
Dalším důležitým krokem je volba hranic systému. Vycházíme při ní jednak ze skutečného (konstrukčního) tvaru systému, jednak z toho, zda chceme vytvořit model systému se soustředěnými parametry (v matematickém popisu nefigurují souřadnice jako nezávisle proměnné), nebo s rozloženými parametry (alespoň jedna souřadnice je v matematickém popisu použita jako nezávisle proměnná). Pravidlo pro volbu velikosti bilancovaného systému je opět (podobně jako u časového intervalu) jednoduché:
 
  
* jedná-li se o model se soustředěnými parametry, volíme rozměry bilancovaného systému libovolně (např. podle konstrukčního tvaru aparátu),
 
* jedná-li se o model s rozloženými parametry, pak rozměr bilancovaného systému ve směru té souřadnice, na níž problém závisí (figuruje v popisu jako nezávisle proměnná), musí být infinitesimálně malý (''dx'' apod.).
 
  
<span id="k21-sour"></span>S volbou rozhraní úzce souvisí volba vhodné souřadnicové soustavy. Tu se snažíme volit vždy tak, aby získaný matematický model byl co nejjednodušší. Základní souřadnicové soustavy jsou kartézská (pravoúhlá), cylindrická (válcová) a sférická (kulová). Jejich popis najdete v matematické literatuře. Při volbě se řídíme následujícími zásadami:
+
<div style="margin-left:0cm;margin-right:0cm;"><span style="color:#000000;">V praxi se používají metody s vyšší přesností, které pracují na podobném principu jako metoda Eulerova, ale mají poněkud složitější vzorce. K&nbsp;nejznámějším patří </span><span style="color:#000000;">metody Runge-Kutta, a to 2.řádu a&nbsp;4.řádu. Zájemci najdou jejich popis v každé příručce numerické matematiky, vzorce uvádíme&nbsp;</span>[https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-sim-RK.htm zde]<span style="color:#000000;">.</span></div>
  
* nejčastěji používáme [[F2k21a-mod-ks.htm|kartézské souřadnice]] (jako nejobecnější),
+
<div style="color:#0000ff;margin-left:0cm;margin-right:0cm;">'''2.2.3&nbsp; Stabilita numerického řešení'''</div>
* pro problémy souměrné kolem osy používáme [[F2k21b-mod-cs.htm|cylindrické souřadnice]],
 
* pro středově souměrné problémy používáme [[F2k21c-mod-ss.htm|sférické souřadnice]].
 
  
Velice důležitá je volba kladných směrů ve vybrané souřadnicové soustavě. Jestliže ji důsledně neprovádíme a nedodržujeme, vznikají neřešitelné znaménkové problémy vedoucí k nesprávným výsledkům. Pokud však jsme v jejich dodržování důslední, nemusíme se o znaménka vstupu, výstupu a akumulace vůbec starat - vycházejí automaticky. Fyzikální zákony už totiž ve svém matematickém vyjádření správné znaménko zahrnují. Znaménko musíme úvahou určit jedině pro zdrojový člen: jedná-li se o vznik veličiny, je jeho znaménko kladné, jedná-li se o zánik, je záporné.
+
<div style="color:#000000;">Vedle problémů s chybou numerického řešení diferenciálních rovnic mohou ještě vyvstat problémy s&nbsp;jeho stabilitou. Je-li numerické řešení stabilní, tak se výše popsané chyby vnášené do výpočtu v každém kroku vhodně utlumují a nerostou. Naopak, při nestabilitě se tyto chyby kumulují a mohou narůst tak, že výsledky jsou zcela nepoužitelné. Na stabilitu řešení má opět vliv velikost kroku&nbsp;<span style="background-color:#ccffff;">''h''</span>, a to tak, že s rostoucím krokem se pravděpodobnost nestability zvyšuje. Pro každou diferenciální rovnici existuje krok při kterém nestabilita začíná - hovoříme o mezním kroku stability řešení. Problém nestability je ilustrován na obr.&nbsp;2.4., kde jsou tabulka a graf numerického řešení rovnice&nbsp;&nbsp;</div>
  
Je třeba si uvědomit, že všechny odvozené rovnice musí být rozměrově homogenní. Doporučujeme tuto skutečnost vždycky zkontrolovat.
 
  
+
{| style="border-spacing:0;width:17cm;"
 
+
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
|| &nbsp;
 +
|| [[Image:Obrázek9.png|top]]
 +
|| [[Image:Obrázek10.png|top]]&nbsp;&nbsp;
 +
| align=right| (2.20)
 
|-
 
|-
| style="text-align: center;" width="170" bgcolor="#66FF33"| [[#k21|na začátek kapitoly]]
 
|
 
| width="170"|
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">získané Eulerovou metodou s různým krokem. Při kroku 0.2 je řešení stabilní a blíží se řešení analytickému, při kroku 0.5 je sice řešení ještě stabilní, ale informace o průběhu funkce je velmi hrubá a při kroku 1.0 je řešení nestabilní, kmitá a výsledky jsou zcela nesmyslné - z tvaru analytického řešení jednoznačně vyplývá, že výsledky musí být z intervalu (0;1ñ&nbsp;.</div>
  
 
  
'''<span id="k213"></span>2.1.3<span style="mso-spacerun: yes"> </span>Počáteční a okrajové podmínky'''
+
{| style="border-spacing:0;width:17cm;"
 +
|-
 +
||
 +
{| align="center" style="border-spacing:0;width:6.285cm;"
 +
|-
 +
| align=center style="border-top:1.5pt solid #000000;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0.049cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | '''''t'''''&nbsp;'''i&nbsp;'''
 +
| align=center style="border-top:1.5pt solid #000000;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0.049cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;color:#0000ff;" | '''''Y'''''&nbsp;'''i&nbsp;&nbsp;'''
 +
| align=center style="border-top:0.5pt solid #000000;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;color:#008000;" | '''''Y'''''&nbsp;'''i'''
 +
| align=center style="border-top:0.5pt solid #000000;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;color:#ff00ff;" | '''''Y'''''&nbsp;'''i&nbsp;&nbsp;&nbsp;'''
 +
| align=center style="border-top:0.5pt solid #000000;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;color:#ff0000;" | '''''y'''''&nbsp;'''anal'''
 +
| style="border:none;padding:0cm;" | &nbsp;
 +
|-
 +
| align=center style="border-top:none;border-bottom:1.5pt solid #000000;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0.123cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:1.5pt solid #000000;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;color:#0000ff;" | (''h''<nowiki>=0.2)</nowiki>
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;color:#008000;" | (''h''<nowiki>=0.5)</nowiki>
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;color:#ff00ff;" | (''h''<nowiki>=1.0)</nowiki>
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;&nbsp;
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 0
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 1
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 1
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 1&nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 1&nbsp;
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 0.2
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 1.000
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;&nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.961
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 0.4
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.920
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;&nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.852
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 1.5
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 1.000
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.779
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 0.6
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.773
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;&nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.698
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 0.8
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.587
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;&nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.527
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 1.0
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.399
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.500
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 1.000
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.368
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 1.2
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.240
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;&nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.237
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 1.4
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.125
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;&nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.141
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 1.5
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.000
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.105
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 1.6
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.055
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;&nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.077
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 1.8
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.020
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | &nbsp;&nbsp;
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.039
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | 2.0
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.006
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.000
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | -1.000
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | 0.018
 +
|-
 +
| align=center style="border-top:none;border-bottom:none;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0.123cm;padding-right:0.123cm;" | ''':&nbsp;'''
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | ''':'''
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | ''':&nbsp;'''
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | ''':&nbsp;'''
 +
| align=center style="border-top:none;border-bottom:none;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0cm;padding-left:0cm;padding-right:0.123cm;" | ''':&nbsp;'''
 +
| style="border-top:none;border-bottom:0.05pt solid #808080;border-left:0.05pt solid #808080;border-right:0.75pt solid #808080;padding:0.049cm;" |
 +
|-
 +
| align=center style="border-top:none;border-bottom:1.5pt solid #000000;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0.123cm;padding-right:0.123cm;" | 3.0
 +
| align=center style="border-top:none;border-bottom:1.5pt solid #000000;border-left:none;border-right:0.75pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 0.000
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 0.000
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 3.000
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 0.000
 +
| style="border-top:none;border-bottom:0.75pt solid #808080;border-left:0.05pt solid #808080;border-right:0.75pt solid #808080;padding:0.049cm;" |
 +
|-
 +
|}
  
U modelů popsaných diferenciálními rovnicemi musíme popis doplnit příslušným počtem okrajových a počátečních podmínek. Pro každou nezávisle proměnnou potřebujeme tolik vzájemně nezávislých podmínek, jaký je nejvyšší v rovnicích se vyskytující řád derivace podle této proměnné. Formulace počátečních a okrajových podmínek je nedílnou součástí vytváření matematického modelu. Některé podmínky vyplývají zcela jednoduše ze zadání úlohy (např. na počátku je teplota ve všech bodech stejná a rovná určité hodnotě), jiné musíme odvodit stejnými postupy jako matematický model (např. na základě bilance). Jako kontrola správnosti jejich odvození nám může sloužit skutečnost, že obecně co do matematického tvaru existuje jen několik druhů podmínek, a tedy v konkrétním případě musíme dosáhnout shody s jedním z nich.
+
| align=center| [[Image:Obrázek11.png|top]]
 
+
|-
Pro popis obecného matematického tvaru druhů počátečních a okrajových podmínek použijeme následující označení veličin:
+
| colspan="2" align=center style="color:#800000;" | ''Obr.&nbsp;2.4.&nbsp;&nbsp;Ukázka k problému stability numerického řešení ODR&nbsp;&nbsp;''
 
 
''<span style="background-color: #CCFFFF">u</span>'' ... závisle proměnná,              ''<span style="background-color: #CCFFFF">t</span>'' ... čas,            ''<span style="background-color: #CCFFFF">x</span>''<span style="background-color: #CCFFFF">, ''y'', ''z'' </span> ... souřadnice, 
 
 
 
''<span style="background-color: #CCFFFF">f</span>'' <span style="background-color: #CCFFFF"> </span> ... funkční předpis, jehož tvar známe a hodnotu funkce můžeme kdykoliv vypočíst.
 
 
 
'''Počáteční podmínka''' je obvykle jedna a definuje situaci na počátku řešení. Obecně ji můžeme zapsat ve tvaru
 
 
 
{| class="wikitable" border="0" width="100%" cellspacing="0"
 
 
|-
 
|-
| width="5%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="85%" bgcolor="#CCFFFF" valign="middle"| pro<span style="mso-spacerun: yes">  </span>''t'' = ''t''<sub>0</sub>:<span style="mso-tab-count:2">              </span>''u'' = ''f (x,y,z)''
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.2)
 
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Pokud je řešení nestabilní, pomůže ve většině případů zmenšení kroku.</div>
  
<span style="font-size:11.0pt;mso-bidi-font-size:10.0pt;
+
<div style="color:#000000;">Z&nbsp;toho, co bylo řečeno o chybách a stabilitě, vyplývá, že nemůžeme numerické řešení matematických modelů provádět mechanicky, ale musíme nad ním přemýšlet a vypracovat si vždy způsob jak výsledky kontrolovat. Protože lze předpokládat, že budeme většinou řešit problémy z&nbsp;praxe, je nám velkou pomocí právě možnost kontroly výsledků srovnáním s&nbsp;realitou, s fyzikální podstatou veličin a&nbsp;s&nbsp;praktickými omezeními jejich hodnot.</div>
mso-bidi-font-family:Arial">čili na počátku (v čase <span style="mso-bidi-font-style: normal; background-color: #CCFFFF">''t''<sub>0</sub></span>) je závisle proměnná ''u'' známou funkcí souřadnic ''x, y, z''.</span>
 
  
'''Okrajové podmínky''' se vyskytují v případech, kde jako nezávisle proměnné vystupují souřadnice. Rozeznáváme tři základní typy okrajových podmínek :
+
<div style="color:#000000;">&nbsp;</div>
  
<span style="font-family:&quot;Times New Roman&quot;;mso-bidi-font-family:Arial">'''a)'''<span style="font:7.0pt &quot;Times New Roman&quot;">      </span></span><u><span style="font-family:&quot;Times New Roman&quot;;mso-bidi-font-family:Arial">okrajová podmínka 1.druhu (Dirichletova) :</span></u>
 
  
{| class="wikitable" border="0" width="100%" bgcolor="#CCFFFF" cellspacing="0"
+
{| style="border-spacing:0;width:17cm;"
 +
|-
 +
| align=center style="background-color:#66ff33;border:none;padding:0.049cm;" | [https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-sim.htm#k22 na začátek kapitoly]
 +
| style="border:none;padding:0.049cm;" |
 +
| style="border:none;padding:0.049cm;" |
 
|-
 
|-
| width="5%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="85%" bgcolor="#CCFFFF" valign="middle"| pro ''x'' = ''x''<sub>0</sub> : <span style="mso-tab-count:2">            </span>''        u'' = ''f (y,z,t)''
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.3)
 
 
 
|}
 
|}
 +
<div style="color:#000000;">&nbsp;</div>
  
<span style="font-family:&quot;Times New Roman&quot;;mso-bidi-font-family:Arial">tj. hodnota závisle proměnné v místě ''<span style="background-color: #CCFFFF">x</span>''<span style="background-color: #CCFFFF"><sub>0</sub></span><span style="mso-spacerun: yes">  </span>je známou funkcí ostatních souřadnic a času.</span>
+
<div style="color:#0000ff;margin-left:0cm;margin-right:0cm;">'''2.2.4&nbsp;&nbsp;Stanovení hodnot parametrů modelu'''</div>
  
<span style="font-family:&quot;Times New Roman&quot;">'''b)'''<span style="font:7.0pt &quot;Times New Roman&quot;">      </span></span><u><span style="font-family:&quot;Times New Roman&quot;">okrajová podmínka 2.druhu (Neumannova) :</span></u>
+
<div style="color:#000000;">Při odvozování matematického modelu nebo i jen při vyjadřování některých dílčích závislostí veličin v&nbsp;modelu často používáme parametrů (konstant), jejichž hodnoty předem neznáme a musíme je nějakým způsobem stanovit. Hovoříme o tzv.&nbsp;<u>identifikaci modelu</u>. Problematika identifikace představuje dost rozsáhlou oblast, my se zde budeme zabývat pouze nejjednodušší metodikou, kterou bychom mohli běžně použít. V&nbsp;matematice se probírá postup aproximace empirických dat metodou nejmenších čtverců (prokládání přímky či jiné funkce naměřenými daty apod.). Tato metodika je sice obecně použitelná, ale nedá se využít tehdy, kdy je potřeba dosáhnout souhlasu výsledků řešení diferenciálních rovnic s&nbsp;nějakými empirickými daty. V&nbsp;tomto případě je vhodnější použít metod optimalizace.</div>
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
<div style="color:#000000;">'''Optimalizace'''&nbsp; je matematický resp. početní postup, kterým hledáme extrém nějaké funkce. Této funkci říkáme účelová nebo&nbsp;<u>kriterium optimalizace</u>&nbsp;a její tvar musíme předem určit tak, abychom optimalizací dosáhli požadovaného cíle. Hodnotu kritéria optimalizace můžeme ovlivnit změnou zvolených parametrů matematického popisu optimalizační úlohy, kterým říkáme&nbsp;<u>optimalizační proměnné</u>. Extrém (buď maximum nebo minimum) hledáme na nějaké množině, z níž hodnoty optimalizačních proměnných vybíráme. Na této množině může být více extrémů, kterým říkáme&nbsp;<u>extrémy lokální</u>&nbsp;(jsou na podmnožinách dané množiny) a&nbsp;jeden&nbsp;<u>extrém globální</u>, který právě hledáme. Při většině metod numerické optimalizace musíme zadat nějakou počáteční hodnotu pro každou optimalizační proměnnou, tzv.&nbsp;<u>nástřel</u>. Lokální extrémy jsou&nbsp; nepříjemné tím, že v nich optimalizační postupy někdy „uvíznou“ a pak nemohou dosáhnout extrému globálního. Pomoci si můžeme tak, že zvolíme jiný nástřel, ale musíme být schopni (podle znalosti řešeného problému a charakteru výsledků) rozpoznat, zda je nalezený extrém lokální či globální, což nebývá vždy jednoduché a vyžaduje to určitou zkušenost. Pokud se týče optimalizačních proměnných, může být jejich výběr co do rozsahu hodnot neomezený, tj. z intervalu (-¥,+¥), pak mluvíme o hledání&nbsp;<u>volného extrému</u>, nebo omezený, např. pro každou optimalizační proměnnou máme určen uzavřený interval z něhož mohou být její hodnoty vybírány, a pak mluvíme o hledání&nbsp;<u>vázaného extrému</u>. Ve většině praktických optimalizačních úloh hledáme vázaný extrém, protože vždy existují nějaká technická nebo technologická omezení.</div>
|-
 
| width="5%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="20%" bgcolor="#CCFFFF" valign="middle"| pro ''x'' = ''x''<sub>0</sub> :
 
  
| style="text-align: center;" width="65%" bgcolor="#CCFFFF" valign="middle"|      [[File:F2k21-r24.gif|137x49px]]
+
<div style="color:#000000;">&nbsp;&nbsp;Základním problémem optimalizace je&nbsp;'''volba vhodného optimalizačního kritéria'''. V&nbsp;případech identifikace matematických modelů by mělo vyjadřovat shodu modelu se skutečností. Při identifikaci hledáme takové hodnoty parametrů modelu, aby odezva modelu na změnu vstupu byla co nejbližší odezvě reálného systému na stejnou změnu vstupu. Předpokládejme tedy, že jsme na vstup reálného systému přivedli definovaný (tj. se známým časovým průběhem) signál&nbsp;<span style="background-color:#ccffff;">''u(t)''</span>&nbsp;a&nbsp;na výstupu jsme naměřili časově proměnný signál&nbsp;<span style="background-color:#ccffff;">''y</span><span style="background-color:#ccffff;">E</span><span style="background-color:#ccffff;">(t)''</span>. Stejný signál&nbsp;<span style="background-color:#ccffff;">''u(t)''</span>&nbsp;přivedeme na vstup modelu a&nbsp;zaznamenáme výstupní signál&nbsp;&nbsp;<span style="background-color:#ccffff;">''y</span><span style="background-color:#ccffff;">M</span><span style="background-color:#ccffff;">(t)''</span><span style="background-color:#ccffff;">.</span>&nbsp;Pokud má model odpovídat skutečnosti, neměly by se časové průběhy těchto signálů podstatně lišit. Optimalizační kritérium vytvoříme tak, aby kvantitativně vyjadřovalo míru shody obou průběhů. Prakticky vždy se používá osvědčené kritérium&nbsp;<u>součet čtverců odchylek</u>, které má pro případ porovnávání obou průběhů v&nbsp;<span style="background-color:#ccffff;">''n''</span>&nbsp;bodech tvar</div>
  
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.4)
 
  
 +
{| style="border-spacing:0;width:17cm;"
 +
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
 +
|| &nbsp;
 +
|| [[Image:Obrázek12.png|top]]
 +
|| &nbsp;
 +
| align=right| (2.21)
 +
|-
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">nebo v případě hodnocení shody na spojitém intervalu&nbsp;<span style="background-color:#ccffff;"><</span><span style="background-color:#ccffff;">''a''</span><span style="background-color:#ccffff;">,&nbsp;</span><span style="background-color:#ccffff;">''b''</span><span style="background-color:#ccffff;">>&nbsp;</span>&nbsp;tvar</div>
  
<span style="font-family:&quot;Times New Roman&quot;">čili hodnota derivace závisle proměnné podle jedné souřadnice (např. podle ''x''<span style="mso-spacerun: yes">  </span>v bodě ''<span style="background-color: #CCFFFF">x</span>''<span style="background-color: #CCFFFF"><sub>0</sub></span>)<sub><span style="mso-spacerun: yes">  </span></sub>je známou funkcí ostatních souřadnic a času. Často se setkáváme s okrajovou podmínkou 2. druhu ve tvaru</span>
 
  
{| class="wikitable" border="0" width="100%" cellspacing="0" bgcolor="#CCFFFF"
+
{| style="border-spacing:0;width:17cm;"
 +
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
 +
|| &nbsp;
 +
|| [[Image:Obrázek13.png|top]]
 +
|| &nbsp;
 +
| align=right| (2.22)
 
|-
 
|-
| width="5%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="20%" bgcolor="#CCFFFF" valign="middle"| pro ''x'' = ''x''<sub>0</sub> :
 
 
| style="text-align: center;" width="65%" bgcolor="#CCFFFF" valign="middle"|      [[File:F2k21-r25.gif|49x42px]]
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.5)
 
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Tato kritéria nabývají při naprosté shodě obou průběhů hodnoty 0, jinak se nule blíží. Jestliže jich použijeme jako účelové funkce, pak optimalizací hledáme jejich minimum. Jestliže bychom potřebovali porovnávat průběh více výstupů současně, např.&nbsp;&nbsp;<span style="background-color:#ccffff;">''y(t)''</span>&nbsp;a&nbsp;<span style="background-color:#ccffff;">''z(t)''</span>, pak jednoduše použijeme účelové funkce ve tvaru (např. pro spojitý případ)</div>
  
<span style="font-family:&quot;Times New Roman&quot;">tj. derivace závisle proměnné podle normály k nějaké ploše je nulová.  </span>
 
 
<span style="font-family:&quot;Times New Roman&quot;">'''c)'''<span style="font:7.0pt &quot;Times New Roman&quot;">      </span></span><u><span style="font-family:&quot;Times New Roman&quot;">okrajová podmínka 3.druhu (Newtonova) :</span></u><span style="font-family:&quot;Times New Roman&quot;"><span style="mso-tab-count:1">  </span></span>
 
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
{| style="border-spacing:0;width:17cm;"
 +
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
 +
|| &nbsp;
 +
|| [[Image:Obrázek14.png|top]]
 +
|| &nbsp;
 +
| align=right| (2.23)
 
|-
 
|-
| width="5%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="20%" bgcolor="#CCFFFF" valign="middle"| pro ''x'' = ''x''<sub>0</sub> :
 
 
| style="text-align: center;" width="65%" bgcolor="#CCFFFF" valign="middle"|      [[File:F2k21-r26.gif|246x49px]]
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.6)
 
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">nebo obecněji</div>
  
<span style="font-family:&quot;Times New Roman&quot;">tj. hodnota lineární kombinace hodnoty závisle proměnné ''u'' v bodě ''<span style="background-color: #CCFFFF">x</span>''<sub><span style="background-color: #CCFFFF">0</span><span style="mso-spacerun: yes">  </span></sub>a její derivace podle ''x'' v místě ''<span style="background-color: #CCFFFF">x</span>''<span style="background-color: #CCFFFF"><sub>0</sub> </span> je známou funkcí ostatních souřadnic a času; konstanty ''a, b'' jsou koeficienty lineární kombinace.  </span>
 
  
+
{| style="border-spacing:0;width:17cm;"
 
+
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
|| &nbsp;
 +
|| [[Image:Obrázek15.png|top]]
 +
|| &nbsp;
 +
| align=right| (2.24)
 
|-
 
|-
| style="text-align: center;" width="170" bgcolor="#66FF33"| [[#k21|na začátek kapitoly]]
 
|
 
| width="170"|
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">kde&nbsp;<span style="background-color:#ccffff;">''v''</span><span style="background-color:#ccffff;">1</span><span style="background-color:#ccffff;">&nbsp;</span>a&nbsp;<span style="background-color:#ccffff;">''v''</span><span style="background-color:#ccffff;">2</span>&nbsp; jsou váhy, pomocí kterých můžeme podle potřeby upravit vliv výsledku porovnání jednotlivých průběhů na hodnotu účelové funkce. Podle stejného principu postupujeme i v případě porovnávání tří a více průběhů.</div>
  
+
<div style="color:#0000ff;margin-left:0cm;margin-right:0cm;">'''2.2.5&nbsp; Simulační programovací jazyky'''</div>
  
<span style="font-family: Times New Roman">'''<span id="k214"></span>2.1.4  Ukázkové příklady na vytváření matematických modelů'''</span>
+
<div style="color:#000000;">Pro řešení matematických modelů existuje celá řada simulačních programovacích jazyků, které umožňují efektivní práci bez hlubších znalostí programování počítačů. Jejich podstata je různá, např. existují jazyky rovnicově orientované (programují se zápisem rovnic modelu), blokově orientované (programují se propojováním funkčních bloků, které realizují základní operace, např. integraci, různé matematické funkce atd.), modulově orientované (obsahují moduly představující již hotové modely zařízení nebo procesů a ty se pak propojují pomocí signálů reprezentujících toky hmot a energií) apod. Mají obvykle zabudovány různé numerické metody pro řešení modelových rovnic, dobrou grafickou prezentaci výsledků simulace a&nbsp;možnost práce se vstupními i výstupními datovými soubory. Jsou velmi často oborově zaměřené.</div>
  
<u>'''Příklad M-1'''</u>
+
<div style="color:#000000;">My pro naši potřebu budeme používat jednoduchý, poměrně univerzální, blokově orientovaný jazyk PSI, který je k dispozici na síti v učebnách VŠCHT. Je to blokově orientovaný jazyk a byl vyvinut na univerzitě v&nbsp;holandském Delftu. Jeho předností je to, že je speciálně zaměřen na řešení soustav obyčejných diferenciálních rovnic. Z hlediska uživatele je velice příznivé, že je v základě zvládnutelný zhruba během dvou hodin. Součástí této učebnice je i jeho volně šiřitelná demoverze, která umožňuje řešit úlohy malého rozsahu. Popis jazyka PSI a&nbsp;možností demoverze je v příloze této učebnice.</div>
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
<div style="color:#000000;">Dalším simulačním nástrojem, který je k&nbsp;dispozici na síti VŠCHT, je rovněž blokově orientovaný SIMULINK, který je součástí programového balíku MATLAB. Jeho určitou nevýhodou je, že k&nbsp;jeho používání je nutné nejprve zvládnout základy MATLABu, což vyžaduje poměrně dost času.</div>
|-
 
| valign="top"| <u>Úkol:</u>
 
  
Vytvořit matematický model elektrického průtokového ohřívače vody za účelem sledování časového průběhu výstupní teploty.
+
<div style="color:#000000;">&nbsp;</div>
  
| width="40%"| [[File:F2k21-opr1.gif|253x88px]]
 
  
 +
{| style="border-spacing:0;width:17cm;"
 +
|-
 +
| align=center style="background-color:#66ff33;border:none;padding:0.049cm;" | [https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-sim.htm#k22 na začátek kapitoly]
 +
| style="border:none;padding:0.049cm;" |
 +
| style="border:none;padding:0.049cm;" |
 +
|-
 
|}
 
|}
 +
<div style="color:#000000;">&nbsp;</div>
  
<u>Známe:</u>
+
<div style="color:#0000ff;margin-left:0cm;margin-right:0cm;">'''2.2.6&nbsp;&nbsp;Příklady simulace'''</div>
  
objem ohřívače ''V'', průtok vody ''Q'', vstupní teplotu vody ''T<sub>1</sub>'', příkon topení ''''P'''', účinnost topení <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-family: Symbol; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; background-color: #CCFFFF">h</span> , <br />
+
<div style="color:#800000;margin-left:0cm;margin-right:0cm;"><u>'''Příklad S-1'''</u></div>
hustotu<span style="mso-spacerun: yes">  </span>vody <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; font-family: Symbol; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; background-color: #CCFFFF">r</span> , měrné teplo vody<span style="mso-spacerun: yes"> </span>''''c''''<sub>''p''</sub>
 
  
<u>Předpoklady (tj. teoretický model):</u>
+
<div style="color:#000000;margin-left:0cm;margin-right:0cm;"><u>Úkol:</u></div>
  
Model budeme odvozovat pro systém se soustředěnými parametry (předpoklad dokonalého promíchávání obsahu ohřívače, tj. všude uvnitř je teplota stejná jako na výstupu), hustota a měrné teplo jsou nezávislé na teplotě.
+
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Řešit diferenciální rovnici (2.20), tj.</div>
  
<u>Bilance:</u>
 
  
Jako bilancovaný systém volíme celý ohřívač (nezávislost na souřadnici), jako bilanční časový interval volíme ''<span style="background-color: #CCFFFF">dt</span>'' (hledáme model pro neustálený stav). Bilancovaná veličina bude energie (resp. entalpie). Jednotlivé členy bilanční rovnice jsou:
+
{| align="center" style="border-spacing:0;width:17cm;"
 +
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
 +
|| &nbsp;
 +
|| [[Image:Obrázek16.png|top]]
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
[[Image:Obrázek17.png|top]]
 +
| align=center| &nbsp;
 +
|| [[Image:Obrázek18.png|left|top]]
 
|-
 
|-
| width="8%" valign="middle" bgcolor="#CCFFFF"|
+
|}
| style="text-align: center;" width="22%" bgcolor="#CCFFFF" valign="middle"| VSTUP :
+
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Eulerovou metodou s krokem 0,2 pomocí jazyka PSI a simulací získaný výsledek porovnat s&nbsp;analytickým řešením (rovněž naprogramovaným v jazyku PSI) výpočtem chyby. Totéž řešení provést pomocí metody Runge-Kutta 2.řádu a výsledky porovnat.</div>
  
| style="text-align: center;" width="60%" bgcolor="#CCFFFF" valign="middle"|      ''Q''r''c<sub>p</sub>T''<sub>1</sub>.''dt''
+
<div style="color:#000000;">&nbsp;</div>
  
| width="10%" valign="middle" bgcolor="#CCFFFF"| 
 
  
|-
+
{| style="border-spacing:0;width:14.896cm;"
| width="8%" valign="middle" bgcolor="#CCFFFF"|
+
|- style="border:none;padding:0.049cm;"
| style="text-align: center;" width="22%" bgcolor="#CCFFFF" valign="middle"| VÝSTUP :
+
| style="color:#800000;" | Výpis programu:
 +
|| <span style="color:#008c00;">%</span><span style="color:#008c00;">&nbsp;</span><span style="color:#008c00;">Příklad S-1 (řešení dif. rovnice)</span>
  
| style="text-align: center;" width="60%" bgcolor="#CCFFFF" valign="middle"|      ''Q''r''c<sub>p</sub>T''<sub>2</sub>.''dt''
+
<span style="color:#000000;">y&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;</span><span style="color:#0000ff;">INT</span><span style="color:#000000;">(-2*TIME*y&nbsp;</span><span style="color:#0000ff;">PAR</span><span style="color:#000000;">:1);&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:#008c00;">% numerické řešení</span>
  
| width="10%" valign="middle" bgcolor="#CCFFFF"|
+
<span style="color:#000000;">yan&nbsp; = exp(-(TIME^2));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:#008c00;">&nbsp;&nbsp;&nbsp; % analytické řešení</span>
|-
 
| width="8%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="22%" bgcolor="#CCFFFF" valign="middle"| ZDROJ :
 
  
| style="text-align: center;" width="60%" bgcolor="#CCFFFF" valign="middle"|      ''P''h.''dt''
+
<span style="color:#000000;">ch&nbsp;&nbsp; =&nbsp; y-yan;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color:#008c00;">% chyba</span>
  
| width="10%" valign="middle" bgcolor="#CCFFFF"
+
&nbsp;
 +
|- style="border:none;padding:0.049cm;"
 +
| colspan="2" | <div style="color:#800000;">Ukázka výsledků:</div>
  
|-
+
Eulerova metoda, krok 0.2,&nbsp; max.chyba 7.5&nbsp;.&nbsp;10-2
| width="8%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="22%" bgcolor="#CCFFFF" valign="middle"| AKUMULACE :
 
  
| style="text-align: center;" width="60%" bgcolor="#CCFFFF" valign="middle"|       ''V''r''c<sub>p</sub>.dT''<sub>2</sub>
+
[[Image:Obrázek19.png|top]]
 +
|- style="border:none;padding:0.049cm;"
 +
| colspan="2" | Metoda Runge-Kutta 2.řádu, krok 0.2, max.chyba -5&nbsp;.&nbsp;10-3
  
| width="10%" valign="middle" bgcolor="#CCFFFF"|
+
[[Image:Obrázek20.png|top]]
 +
|- style="border:none;padding:0.049cm;"
 +
| style="color:#800000;" | Program v PSI:
 +
|| soubory:&nbsp;<span style="color:#cc0099;">Prikl_S-1.PSM , Prikl_S-1.MOD</span>
 +
|-
 
|}
 
|}
 +
<div style="color:#000000;">&nbsp;</div>
  
Dosazením do základní bilanční rovnice (2.1) a úpravou dostaneme výslednou diferenciální rovnici pro teplotu na výstupu ohřívače
 
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
{| style="border-spacing:0;width:17cm;"
 +
|-
 +
| align=center style="background-color:#66ff33;border:none;padding:0.049cm;" | [https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-sim.htm#k22 na začátek kapitoly]
 +
| style="border:none;padding:0.049cm;" |
 +
| style="border:none;padding:0.049cm;" |
 
|-
 
|-
| width="7%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="67%" bgcolor="#CCFFFF" valign="middle"| [[File:F2k21-r27.gif|164x48px]]
 
 
| style="text-align: center;" bgcolor="#CCFFFF" valign="middle"|     
 
 
| width="12%" valign="middle" bgcolor="#CCFFFF"| (2.7)
 
 
 
|}
 
|}
 +
<div style="color:#000000;">&nbsp;</div>
  
Počáteční podmínku zformulujeme např. z předpokladu, že teplota na výstupu se na počátku rovná teplotě na vstupu, tedy
+
<div style="color:#800000;margin-left:0cm;margin-right:0cm;"><u>'''Příklad S-2'''</u></div>
 
 
{| class="wikitable" border="0" width="100%" cellspacing="0"
 
|-
 
| width="7%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="18%" bgcolor="#CCFFFF" valign="middle"| pro ''t'' = 0 :
 
 
 
| style="text-align: center;" width="65%" bgcolor="#CCFFFF" valign="middle"|      ''T''<sub>2</sub>(0) = ''T''<sub>1</sub>
 
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.8)
 
  
|}
+
<div style="color:#000000;margin-left:0cm;margin-right:0cm;"><u>Úkol:</u></div>
  
Rovnice (2.7) a (2.8) tvoří hledaný matematický model.
+
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Simulovat reakci výstupní teploty elektrického ohřívače vody (viz&nbsp;<span style="color:#800000;">příklad M-1</span>) na skokovou změnu teploty vstupující vody. Matematický model ohřívače je</div>
  
 
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
{| style="border-spacing:0;width:17cm;"
 +
|- style="background-color:#ccffff;border:none;padding:0.049cm;"
 +
||
 +
|| [[Image:Obrázek21.png|left|top]]
 +
|| &nbsp;&nbsp;&nbsp;&nbsp;[[Image:Obrázek22.png|top]]
 +
||
 
|-
 
|-
| style="text-align: center;" width="170" bgcolor="#66FF33"| [[#k21|na začátek kapitoly]]
 
|
 
| width="170"|
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Hodnota teploty&nbsp;''T''0&nbsp;odpovídá ustálenému stavu.</div>
  
+
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Doba simulace je 60 minut, skok vstupní teploty je proveden v 5.minutě. Číselné hodnoty parametrů a jejich rozměry jsou patrné z výpisu programu. K numerickému řešení je použito metody Runge-Kutta 2.řádu, krok výpočtu je 0,001.</div>
  
<u>'''Příklad M-2'''</u>
 
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
{| style="border-spacing:0;width:17cm;"
|-
+
|- style="border:none;padding:0.049cm;"
| valign="top"| <u>Úkol:</u>
+
| style="color:#800000;" | Výpis programu:
 +
|| <div style="color:#008c00;">% Příklad S-1 (simulace reakce T2 na skokovou změnu T1)</div>
  
Vytvořit matematický model pro stanovení časových změn teplotního průběhu podél teploměrné jímky vyčnívající ze stěny zařízení do proudícího média.
+
T2 =&nbsp;<span style="color:#0000ff;">INT</span>(Q*(T1-T2)/V+P*eta/(<span style="color:#000000;">V*rocp</span>)&nbsp;<span style="color:#0000ff;">PAR</span>:<span style="color:#000000;">T0</span>);&nbsp;<span style="color:#008c00;">% teplota vody na výstupu (°C)</span>
  
| width="40%"| [[File:F2k21-opr2.gif|223x158px]]
+
V = 5; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008c00;">% objem ohřívače (l)</span>
  
|}
+
Q = 0.5; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008c00;">% průtok vody (l/min)</span>
  
<u>Známe:</u>
+
<span style="color:#000000;">T0</span>&nbsp;=&nbsp;<span style="color:#000000;">37.91</span><nowiki>; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</nowiki><span style="color:#008c00;">% výst.teplota v ust.stavu (°C)</span>
  
rozměry jímky (délku ''L'', průřez ''S'', obvod ''B''), teplotu proudícího média ''''T''''<sub>''M''</sub>, teplotu stěny ''''T''''<sub>''S''</sub>, <br />
+
<span style="color:#000000;">rocp</span><nowiki>=&nbsp;</nowiki><span style="color:#000000;">1*4187</span><nowiki>; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</nowiki><span style="color:#008c00;">% součin hustoty a měr.tepla vody (J/l/K)</span>
tepelnou vodivost materiálu jímky <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; background-color: #CCFFFF; mso-bidi-font-style: normal">l</span>, hustotu materiálu jímky <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; background-color: #CCFFFF; mso-bidi-font-style: normal">r</span>, měrné teplo materiálu jímky ''''c''''<sub>''p''</sub>, <br />
 
koeficient přestupu tepla mezi povrchem jímky a proudícím médiem <span style="mso-char-type: symbol; mso-symbol-font-family: Symbol; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-style: normal; background-color: #CCFFFF">a</span>
 
  
<u>Předpoklady (tj. teoretický model):</u>
+
T1 =&nbsp;<span style="color:#0000ff;">BNG</span>(time&nbsp;<span style="color:#0000ff;">PAR</span>:<span style="color:#000000;">15</span>,<span style="color:#000000;">18,5)</span><nowiki>; &nbsp;&nbsp;&nbsp;</nowiki><span style="color:#008c00;">% skok teploty na vstupu (°C)</span>
  
Teplota je funkcí pouze souřadnice ''x'' a času ''t'' (tj. zanedbáváme rozdělení teploty na průřezu jímkou), teplo se vyměňuje s proudícím médiem na celém povrchu rovnoměrně, koncem jímky (''x''=''L'') se teplo nepředává, hodnoty fyzikálních parametrů jímky jsou v uvažovaném teplotním rozmezí konstantní.
+
P =&nbsp;<span style="color:#000000;">60000</span><nowiki>; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</nowiki><span style="color:#008c00;">% příkon topení (J/min)</span>
  
<u>Bilance:</u>
+
eta = 0.8; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008c00;">% účinnost topení (1)</span>
  
<span style="mso-tab-count:1"></span>Zanedbáváme rozložení teploty na průřezu jímky, takže vystačíme s jedinou souřadnicí ''x''. Kladný směr osy ''x'' je zleva doprava. Jako bilancovaný systém volíme element („plátek“) vyříznutý z jímky kolmo k její délce, jeho délka je ''dx''<span style="mso-spacerun: yes"> </span>(protože nás zajímá závislost na souřadnici), vzdálenost tohoto elementu od počátku je obecně ''x''. Jako bilanční časový interval volíme ''dt'' (protože nás zajímá i závislost na čase). Bilancujeme teplo a jednotlivé členy bilanční rovnice jsou:
+
&nbsp;
 +
|- style="border:none;padding:0.049cm;"
 +
| colspan="2" | <div style="color:#800000;">Ukázka výsledků:</div>
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
[[Image:Obrázek23.png|left|top]]
 
|-
 
|-
| width="8%" valign="middle" bgcolor="#CCFFFF"|
+
|}
| style="text-align: center;" width="14%" bgcolor="#CCFFFF" valign="middle"| VSTUP :
 
 
 
| style="text-align: center;" width="68%" bgcolor="#CCFFFF" valign="middle"|      [[File:F2k21-rpr21.gif|78x42px]]
 
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"| 
 
  
 +
{| style="border-spacing:0;width:25.982cm;"
 +
|- style="border:none;padding:0.049cm;"
 +
| style="color:#800000;" | Program v PSI:
 +
|| soubory:&nbsp;<span style="color:#cc0099;">Prikl_S-2.PSM , Prikl_S-2.MOD</span>
 
|-
 
|-
| width="8%" valign="middle" bgcolor="#CCFFFF"|
+
|}
| style="text-align: center;" width="14%" bgcolor="#CCFFFF" valign="middle"| VÝSTUP :
+
<div style="color:#000000;">Z výsledku je vidět, že po změně vstupu se teplota výstupu ustaluje na nové hodnotě - v&nbsp;čase 59.04&nbsp;minut je to&nbsp; 40.9092 °C (viz graf).</div>
  
| style="text-align: center;" width="68%" bgcolor="#CCFFFF" valign="top"|      [[File:F2k21-rpr22.gif|285x46px]]<br />
+
<div style="color:#000000;">&nbsp;</div>
                  ''vedením                                  konvekcí''
 
  
| width="10%" valign="middle" bgcolor="#CCFFFF"| 
 
  
 +
{| style="border-spacing:0;width:3.771cm;"
 
|-
 
|-
| width="8%" valign="middle" bgcolor="#CCFFFF"|
+
| align=center style="background-color:#66ff33;border:none;padding:0.049cm;" | [https://uprt.vscht.cz/ucebnice/mrt/F2/F2k22-sim.htm#k22 na začátek kapitoly]
| style="text-align: center;" width="14%" bgcolor="#CCFFFF" valign="middle"| ZDROJ :
+
| style="border:none;padding:0.049cm;" |  
 
+
| style="border:none;padding:0.049cm;" |  
| style="text-align: center;" width="68%" bgcolor="#CCFFFF" valign="middle"|            0
 
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"|
 
 
 
 
|-
 
|-
| width="8%" valign="middle" bgcolor="#CCFFFF"| 
+
|}
| style="text-align: center;" width="14%" bgcolor="#CCFFFF" valign="middle"| AKUMULACE :
+
<div style="color:#000000;">&nbsp;</div>
  
| style="text-align: center;" width="68%" bgcolor="#CCFFFF" valign="middle"|      [[File:F2k21-rpr24.gif|103x42px]]
+
<div style="color:#800000;margin-left:0cm;margin-right:0cm;"><u>'''Příklad S-3'''</u></div>
  
| width="10%" valign="middle" bgcolor="#CCFFFF"
+
<div style="color:#000000;margin-left:0cm;margin-right:0cm;"><u>Úkol:</u></div>
  
|}
+
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Provést identifikaci modelu elektrického ohřívače vody (viz&nbsp;<span style="color:#800000;">příklad M-1</span>) za předpokladu, že není známa hodnota účinnosti topení&nbsp;&nbsp;<span style="background-color:#ccffff;">h</span>. Pro identifikaci byl proveden experiment, kdy byl po zapnutí topení naměřen následující časový průběh teploty :</div>
  
První člen ve výrazu pro výstup (''vedením'') upravíme provedením naznačené derivace a po zanedbání derivace  ''dx'' podle ''''x'''' (diference 2.řádu) dostaneme
 
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
{| style="border-spacing:0;width:17cm;"
 
|-
 
|-
| width="8%" valign="middle" bgcolor="#CCFFFF"|
+
| style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:none;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0.123cm;padding-right:0cm;" | čas (min)
| style="text-align: center;" width="14%" bgcolor="#CCFFFF" valign="middle"|
+
| align=center style="border-top:1.5pt solid #000000;border-bottom:0.75pt solid #000000;border-left:1.5pt solid #000000;border-right:0.75pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0.123cm;padding-right:0.123cm;" | 0
 
+
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 5
| style="text-align: center;" width="68%" bgcolor="#CCFFFF" valign="middle"|       [[File:F2k21-rpr22a.gif|155x52px]]
+
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 10
 
+
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 15
| width="10%" valign="middle" bgcolor="#CCFFFF"|
+
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 20
|}
+
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 25
 
+
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 30
Pak dosadíme do základní bilanční rovnice<span style="mso-spacerun: yes">  </span>(2.1)<span style="mso-spacerun:
+
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 35
yes">  </span>a upravíme. Výsledkem je hledaná parciální diferenciální rovnice pro teplotu ''T'' jako funkci souřadnice ''x'' a času ''t'' :
+
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 40
 
+
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 45
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 50
 +
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 55
 +
| align=center style="border-top:0.5pt solid #000000;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0.049cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 60
 +
|-
 +
| style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:none;padding-top:0cm;padding-bottom:0.049cm;padding-left:0.123cm;padding-right:0cm;" | teplota (°C)
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:0.5pt solid #000000;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0.123cm;padding-right:0.123cm;" | 15
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 26
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 31
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 34
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 37
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 39
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 40
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 40
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 40
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 40
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 41
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 41
 +
| align=center style="border-top:none;border-bottom:0.5pt solid #000000;border-left:none;border-right:0.5pt solid #000000;padding-top:0cm;padding-bottom:0.049cm;padding-left:0cm;padding-right:0.123cm;" | 41
 
|-
 
|-
| width="5%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="17%" bgcolor="#CCFFFF" valign="middle"|
 
| style="text-align: center;" width="68%" bgcolor="#CCFFFF" valign="middle"|      [[File:F2k21-r29.gif|189x50px]]
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.9)
 
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Simulační model ohřívače je popsán v&nbsp;<span style="color:#800000;">příkladu S-2</span>, program je ještě třeba doplnit o příkaz umožňující zpracovávat experimentální data a příkaz pro výpočet optimalizačního kritéria. Protože model dává výsledky prakticky spojité, použijeme kritéria podle rovnice (2.22),&nbsp;kde meze integrálu budou 0 a 60 min, místo&nbsp;<span style="background-color:#ccffff;">''y</span><span style="background-color:#ccffff;">M''</span>&nbsp;bude teplota&nbsp;<span style="background-color:#ccffff;">''T2</span><span style="background-color:#ccffff;">M''</span>&nbsp; vypočtená podle modelu a místo&nbsp;<span style="background-color:#ccffff;">''y</span><span style="background-color:#ccffff;">E''</span>&nbsp;&nbsp;naměřená teplota&nbsp;<span style="background-color:#ccffff;">''T2</span><span style="background-color:#ccffff;">E''</span>.&nbsp;Výsledky experimentu musí být v tom případě k&nbsp;dispozici rovněž jako spojité, což zajistí příkaz FNG lineární interpolací v zadané tabulce.&nbsp;Odhadnutá hodnota (nástřel) účinnosti bude např. 0.8. Pro určení její skutečné hodnoty použijeme optimalizační metody, která je součástí jazyka PSI. Výsledný program je následující:</div>
  
K této rovnici potřebujeme jednu počáteční a dvě okrajové podmínky. Počáteční podmínka definuje stav na počátku, tj. teplota jímky ve všech bodech se rovná teplotě stěny:
 
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
{| style="border-spacing:0;width:17cm;"
|-
+
|- style="border:none;padding:0.049cm;"
| width="7%" valign="middle" bgcolor="#CCFFFF"|
+
| style="color:#800000;" | Výpis programu:
| style="text-align: center;" width="15%" bgcolor="#CCFFFF" valign="middle"| pro ''t'' = 0 :
+
|| <div style="color:#008c00;">% Příklad S-3 (identifikace modelu ohřívače)</div>
  
| style="text-align: center;" width="68%" bgcolor="#CCFFFF" valign="middle"|      ''T''(''x'',0) = ''T<sub>S</sub>''
+
<div style="color:#008c00;">% výst.teplota - model(°C)</div>
  
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.10)
+
<span style="color:#000000;">T2M</span>&nbsp;=&nbsp;<span style="color:#0000ff;">INT</span>(Q*(<span style="color:#000000;">T1-T2M</span>)/V+P*eta/(V*rocp)&nbsp;<span style="color:#0000ff;">PAR</span>:<span style="color:#000000;">T1</span>);&nbsp;
  
|}
+
V = 5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008c00;">% objem ohřívače (l)</span>
  
Okrajová podmínka pro x=0 vychází ze zadání, že teplota jímky se trvale rovná teplotě stěny, tedy
+
Q = 0.5;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008c00;">% průtok vody (l/min)</span>
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
<span style="color:#000000;">rocp</span><nowiki>= 1*4187;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</nowiki><span style="color:#008c00;">% součin hust. a měr.tepla vody (J/l/K)</span>
|-
 
| width="7%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="15%" bgcolor="#CCFFFF" valign="middle"| pro ''x'' = 0 :
 
  
| style="text-align: center;" width="68%" bgcolor="#CCFFFF" valign="middle"|      ''T''(0,''t'') = ''T<sub>S</sub>''
+
T1 =&nbsp;<span style="color:#000000;">15</span><nowiki>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</nowiki><span style="color:#008c00;">% teplota vody na vstupu (°C)</span>
  
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.11)
+
P = 60000;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008c00;">% příkon topení (J/min)</span>
  
|}
+
eta =&nbsp;<span style="color:#0000ff;">PAR</span>(<span style="color:#000000;">0.8</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008c00;">% účinnost (optimalizační proměnná)</span>
  
a okrajová podmínka pro konec jímky ''<span style="background-color: #CCFFFF">x</span>''=''<span style="background-color: #CCFFFF">L</span>'' se odvodí na základě předpokladu, že se koncem jímky teplo nepředává, tedy gradient teploty je nulový:
+
<span style="color:#000000;">T2E</span>&nbsp;=&nbsp;<span style="color:#0000ff;">FNG</span>(time&nbsp;<span style="color:#0000ff;">PAR</span>:0,60,1,T2mer);&nbsp;&nbsp;<span style="color:#008c00;">% výst. teplota - experiment (°C)</span>
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
krit=&nbsp;<span style="color:#0000ff;">INT</span>((<span style="color:#000000;">T2M-T2E</span>)^2&nbsp;<span style="color:#0000ff;">PAR</span>:0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#008c00;">% kritérium optimalizace</span>&nbsp;
 
|-
 
|-
| width="7%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="15%" bgcolor="#CCFFFF" valign="middle"| pro ''x'' = ''L'' :
 
 
| style="text-align: center;" width="68%" bgcolor="#CCFFFF" valign="middle"|      [[File:F2k21-r212.gif|86x48px]]
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.12)
 
 
 
|}
 
|}
 +
<div style="color:#800000;margin-left:0cm;margin-right:0cm;">Nastavení parametrů optimalizace:</div>
  
Hledaný matematický model je tedy tvořen rovnicemi (2.9 - 2.12). Jen pro úplnost uvádíme, že rovnice (2.11) je okrajová podmínka 1.druhu (viz rov. 2.3) a rovnice (2.12) je okrajová podmínka 2.druhu (viz rov. 2.4).
+
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">1. položka menu&nbsp;''Optimization''&nbsp;/&nbsp;''Optimization Data''</div>
  
 
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
{| style="border-spacing:0;width:17cm;"
 +
|-
 +
| align=right style="background-color:#c0c0c0;" | Criterion:
 +
|| krit
 +
|| (jméno bloku, kde se počítá hodnota kritéria)
 +
|-
 +
| align=right style="background-color:#c0c0c0;" | Initial Stepsize:
 +
|| 0.2
 +
|| (počáteční krok změny optimalizační proměnné při vyhledávání)
 +
|-
 +
| align=right style="background-color:#c0c0c0;" | Stop Accuracy:
 +
|| 0.0001
 +
|| (přesnost pro ukončení optimalizace)
 +
|-
 +
| align=right style="background-color:#c0c0c0;" | Maximum No of Iterations:
 +
|| 50
 +
|| (maximální počet vyhledávacích kroků)
 +
|-
 +
| align=right style="background-color:#c0c0c0;" | Optimization Method:
 +
|| Pattern Search + PT
 +
|| (metoda vyhledávání s předčasným ukončením)
 
|-
 
|-
| style="text-align: center;" width="170" bgcolor="#66FF33"| [[#k21|na začátek kapitoly]]
 
|
 
| width="170"|
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">2. položka menu&nbsp;''Optimization''&nbsp;/&nbsp;''Variables to Optimize''&nbsp;</div>
  
 
  
<u>'''Příklad M-3'''</u>
+
{| style="border-spacing:0;width:17cm;"
 
+
|-
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
| align=right style="background-color:#c0c0c0;" | Variable:
 +
|| eta
 +
|| (jméno optimalizační proměnné - blok PAR nebo CON)
 
|-
 
|-
| valign="top"| <u>Úkol:</u>
+
| align=right style="background-color:#c0c0c0;" | Value:
 
+
|| 0.8
Vytvořit matematický model zásobníku kapaliny určený pro sledování výšky hladiny kapaliny v něm v závislosti na změnách přítoku a odtoku. Na odtoku z nádrže je instalován ventil, jehož míru otevření je možné měnit, přítok do nádrže může kolísat.
+
|| (počáteční hodnota optimalizační proměnné&nbsp; - "nástřel")
 
 
| width="40%"| [[File:F2k21-opr3.gif|260x150px]]
 
 
 
|}
 
 
 
<u>Známe:</u>
 
 
 
tvar zásobníku (stojatý válec), plochu dna ''A'', přítok kapaliny ''Q<sub>1</sub>'' a charakteristiku ventilu (vztah vyjadřující závislost průtoku ''<span style="background-color: #CCFFFF">Q</span>'' na míře otevření <span style="background-color: #CCFFFF">''x''</span>, na tlakovém spádu na ventilu <span style="background-color: #CCFFFF">D''p''</span> a hustotě kapaliny <span style="background-color: #CCFFFF">r</span>; ''<span style="background-color: #CCFFFF">K<sub>V</sub></span>'' je konstanta ventilu)
 
 
 
<span style="background-color: #CCFFFF">[[File:F2k21-rpr3-1.gif|107x49px]]</span>
 
 
 
<u>Předpoklady (tj. teoretický model):</u>
 
 
 
Pro náš případ je tlakový spád na ventilu dán hydrostatickým tlakem, tj. <span style="background-color: #CCFFFF">D''p ='' </span><span style="background-color: #CCFFFF">r''gh''</span>, zanedbávají se tlakové ztráty prouděním kapaliny, hustota kapaliny je konstantní.
 
 
 
<u>Bilance:</u>
 
 
 
Jako bilancovaný systém volíme celou nádrž, bilancovanou veličinou je množství kapaliny, což lze v našem případě vyjádřit pouze objemem. Jednotlivé členy bilanční rovnice jsou:
 
 
 
{| class="wikitable" border="0" width="100%" cellspacing="0"
 
 
|-
 
|-
| width="8%" valign="middle" bgcolor="#CCFFFF"|
+
| align=right style="background-color:#c0c0c0;" | Min:
| style="text-align: center;" width="18%" bgcolor="#CCFFFF" valign="middle"| VSTUP :
+
|| 0.5
 
+
|| (dolní mez optimalizační proměnné)
| style="text-align: center;" width="64%" bgcolor="#CCFFFF" valign="middle"|       ''Q''<sub>1</sub>.''dt''
 
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"|
 
 
 
 
|-
 
|-
| width="8%" valign="middle" bgcolor="#CCFFFF"|
+
| align=right style="background-color:#c0c0c0;" | Max:
| style="text-align: center;" width="18%" bgcolor="#CCFFFF" valign="middle"| VÝSTUP :
+
|| 1.0
 
+
|| (horní mez optimalizační proměnné)
| style="text-align: center;" width="64%" bgcolor="#CCFFFF" valign="middle"|       [[File:F2k21-rpr3-2.gif|301x26px]]
 
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"|
 
 
|-
 
|-
| width="8%" valign="middle" bgcolor="#CCFFFF"|
+
| align=right style="background-color:#c0c0c0;" | Gain:&nbsp;
| style="text-align: center;" width="18%" bgcolor="#CCFFFF" valign="middle"| ZDROJ :
+
|| 1
 
+
|| (násobná konstanta - sjednocení řádů při více optimalizačních proměnných)
| style="text-align: center;" width="64%" bgcolor="#CCFFFF" valign="middle"|       0
 
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"|
 
 
 
 
|-
 
|-
| width="8%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="18%" bgcolor="#CCFFFF" valign="middle"| AKUMULACE :
 
 
| style="text-align: center;" width="64%" bgcolor="#CCFFFF" valign="middle"|      ''A.dh''
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"|
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Optimalizace se spouští položkou menu&nbsp;''Optimization''&nbsp;/&nbsp;''Start Optimization'', průběh se vypisuje v textovém okně.</div>
  
Dosazením do základní bilanční rovnice (2.1) a úpravou dostaneme výslednou diferenciální rovnici pro hladinu v nádrži
 
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
+
{| style="border-spacing:0;width:17cm;"
|-
+
|- style="border:none;padding:0.049cm;"
| width="75" valign="middle" bgcolor="#CCFFFF"|
+
|| <div style="color:#800000;">Výsledek simulace před optimalizací</div>
| style="text-align: center;" width="643" bgcolor="#CCFFFF" valign="middle"| [[File:F2k21-rpr3-213.gif|134x42px]]
 
  
| style="text-align: center;" bgcolor="#CCFFFF" valign="middle" width="136"|     
+
[[Image:Obrázek24.png|top]]
 +
|- style="border:none;padding:0.049cm;"
 +
|| <div style="color:#800000;">Výsledek simulace po optimalizaci</div>
  
| width="114" valign="middle" bgcolor="#CCFFFF"| (2.13)
+
[[Image:Obrázek25.png|top]]
 
 
|}
 
  
Počáteční podmínku zformulujeme např. z předpokladu, že výška hladiny na počátku odpovídá ustálenému stavu (přítok = odtok)
 
  
{| class="wikitable" border="0" width="100%" cellspacing="0"
 
 
|-
 
|-
| width="8%" valign="middle" bgcolor="#CCFFFF"|
 
| style="text-align: center;" width="12%" bgcolor="#CCFFFF" valign="middle"| pro ''t'' = 0 :
 
 
| style="text-align: center;" width="70%" bgcolor="#CCFFFF" valign="middle"|      ''h''(0) = ''h''<sub>0</sub>
 
 
| width="10%" valign="middle" bgcolor="#CCFFFF"| (2.14)
 
 
 
|}
 
|}
  
Rovnice (2.13) a (2.14) tvoří hledaný matematický model.
+
{| style="border-spacing:0;width:25.982cm;"
 
+
|- style="border:none;padding:0.049cm;"
+
| style="color:#800000;" | Program v PSI:
 
+
|| soubory:&nbsp;<span style="color:#cc0099;">Prikl_S-3.PSM , Prikl_S-3.MOD</span>
{| class="wikitable" border="0" width="100%" cellspacing="0"
 
 
|-
 
|-
| style="text-align: center;" width="170" bgcolor="#66FF33"| [[#k21|na začátek kapitoly]]
 
|
 
| width="170"|
 
 
|}
 
|}
 +
<div style="color:#000000;margin-left:0cm;margin-right:0cm;">Hodnota kritéria se optimalizací změnila z 367.924 na 7.26312 , výsledná hodnota účinnosti je 0.89858, čili prakticky 0.9.</div>

Aktuální verze z 29. 1. 2024, 21:13

2.2  Simulace


Obsah kapitoly: 2.2.1  Princip numerického řešení obyčejných diferenciálních rovnic

2.2.2  Přesnost numerického řešení

2.2.3  Stabilita numerického řešení

2.2.4  Stanovení hodnot parametrů modelu

2.2.5  Simulační programovací jazyky

2.2.6  Příklady simulace

 
Simulací (pro účely matematického modelování) rozumíme řešení rovnic matematického modelu, přičemž měníme podle potřeby hodnoty vstupních signálů a parametrů a sledujeme jejich vliv na hodnoty výstupních signálů. U modelů dynamických systémů to znamená řešit diferenciální rovnice nebo jejich soustavy. Postupů analytického řešení známých z matematiky zde lze také použít, ale spíše v jednodušších případech. Většinou volíme řešení numerické. Navíc jsou k dispozici simulační jazyky, jejichž používání je většinou snadné a nevyžaduje příliš hluboké znalosti z programování a práce s počítačem. Abychom však dovedli výsledky správně interpretovat, je rozumné znát základní principy, na kterých je numerické řešení diferenciálních rovnic založeno, a je nutné vědět něco o přesnosti výsledků.
2.2.1  Princip numerického řešení obyčejných diferenciálních rovnic
Budeme hovořit o numerickém řešení obyčejných diferenciálních rovnic (ODR) 1.řádu s počáteční podmínkou, které jsou lineární (tj. derivace je v nich vždy v první mocnině). Princip řešení si ukážeme na nejjednodušší metodě Eulerově, ale je společný všem tzv. vícekrokovým metodám. Mějme diferenciální rovnici obecně zapsanou ve tvaru


  Soubor:Obrázek1.png       s počáteční podmínkou   y(t0) = y0 (2.15)
(t ... čas, obecně nezávisle proměnná, y ... závisle proměnná, g ... funkční předpis, jehož tvar známe). Každou diferenciální rovnici 1.řádu na tento tvar můžeme převést osamostatněním derivace. Princip řešení spočívá v tom, že spojitý interval nezávisle proměnné na kterém hledáme řešení diskretizujeme, tj. rozdělíme jej na stejně velké díly o velikosti h, takže dostaneme řadu bodů  ti , pro něž platí


  ti+1 = ti + h       pro  i =  0, 1, 2, ... (2.16)
Hodnoty závisle proměnné v bodech ti  pak vypočteme z Eulerovy formule


  Soubor:Obrázek2.png       pro  i =  0, 1, 2, ... (2.17)
kde hodnota Yi+1  je přibližně rovna hledanému řešení  y(ti+1), přičemž na počátku Y0 = y0 .


Pro názornost je užitečný grafický výklad principu Eulerovy metody, který je vidět na obr.2.2. Metoda vychází z náhrady průběhu analytického řešení na úseku mezi dvěma sousedními body ti , ti+1 přímkou. V počátečním bodě (t0y0) jsme schopni vypočíst hodnotu pravé strany rovnice (2.13) g(t0y0), tedy vlastně hodnotu derivace dy/dt (směrnice tečny). Vzorec (2.17) pak udává, že bod (t1Y1) získáme jako průsečík tečny v počátečním bodě a pořadnice t1. Takto získaný bod (t1Y1) můžeme nyní považovat za počáteční a postup opakovat. Můžeme tak postupně získat body (t2Y2) , (t3Y3) atd. až do konce intervalu t  na němž hledáme řešení. Výsledkem numerického řešení diferenciální rovnice není tedy vzorec jako u řešení analytického, ale tabulka bodů

(tiYi) ,   i = 0, 1, 2,...

Obr.2.2  Princip Eulerovy metody
Postup řešení (kreslení tohoto obrázku) je možné si prohlédnout zde.
Na stejném principu je založeno řešení soustavy ODR 1.řádu s počátečními podmínkami. Soustava obecně k diferenciálních rovnic má  k  závisle proměnných a jednu společnou nezávisle proměnnou. Rovnici (2.15) si můžeme představit zapsanou vektorově


  Soubor:Obrázek4.png Soubor:Obrázek5.png (2.18)
kde je y vektor závisle proměnných, y' vektor derivací závisle proměnných avektor funkcí (pravých stran po osamostatnění derivací). Stejně tak můžeme vektorově zapsat Eulerovu formuli


  Soubor:Obrázek6.png (2.19)
takže vlastně dostaneme samostatný Eulerův vzorec pro každou závisle proměnnou a v každém kroku řešení vypočteme pro danou hodnotu nezávisle proměnné  t  hodnoty všech závisle proměnných podle těchto vzorců. Výsledkem je tabulka vyjadřující závislosti proměnných  Yi  ,  i=1, 2,..., k  na  t.
2.2.2  Přesnost numerického řešení
Numerické řešení diferenciální rovnice závisí nejen na nezávisle proměnné t , ale i na velikosti kroku h . Aby přibližné řešení Y odpovídalo analytickému (přesnému) řešení y , musí platit podmínka konvergence
tedy přesnost numerického řešení je tím větší, čím menší je krok h . U krokových metod vyjadřujeme přesnost resp. chybu metody pomocí mocniny h a hovoříme o metodě příslušného řádu. V případě Eulerovy metody je to přesnost 1.řádu hTento údaj nám slouží pouze k hrubému odhadu chyby, tedy např. je-li  h = 0.1 , dá se očekávat, že přesné bude první desetinné místo výsledku.


O odhad se jedná především proto, že chyba závisí nejen na velikosti kroku, ale i na tvaru funkce v okolí právě počítaného bodu. Z toho logicky vyplývá, že chyba numerického řešení se může v jeho jednotlivých částech (pro různá t) lišit. Na obr. 2.2 jsou chyby numerického řešení v bodech t1 t2 označeny jako D1 D2. Tato chyba je chyba metody a protože souvisí s diskretizací nezávisle proměnné, říká se jí chyba diskretizační. Při numerickém řešení se však do výpočtů vnáší ještě další chyba související se skutečností, že výpočetní prostředek (počítač) pracuje pouze na omezený počet platných míst. Tato chyba souvisí také s velikostí kroku h, protože v rovnici (2.17) může docházet při násobení hodnoty funkce  g  krokem  h  ke značným řádovým posunům. Je to chyba zaokrouhlovací a její velikost je tím větší, čím menší je krok h.  Celková chyba je pak součtem obou, jak je znázorněno na obr. 2.3.
Obr.2.3  Chyba Eulerovy metody
Diskretizační chyba u Eulerovy metody závisí na kroku lineárně, ale obecně tomu tak není. Zmíněné dvě chyby působí proti sobě. Abychom zjistili skutečnou chybu numerického řešení konkrétní rovnice (a to v praxi obvykle potřebujeme), musíme postupovat empiricky následujícím způsobem:

#

podle požadované přesnosti a řádu přesnosti zvolené metody numerického řešení ODR odhadneme potřebnou velikost kroku h,
  1. nalezneme řešení s tímto zvoleným krokem,
  2. krok zmenšíme, např. na polovinu,
  3. nalezneme řešení se zmenšeným krokem,
  4. hodnoty závisle proměnné z obou řešení ve stejných bodech nezávisle proměnné porovnáme a předpokládáme, že správné jsou ty dekadické řády výsledků, které se u obou řešení neliší,
  5. pokud nejsme se získanou přesností spokojeni, krok dále zmenšíme a porovnáváme vždy výsledky dvou posledních kroků; to děláme tak dlouho, až nám přesnost vyhovuje.


V praxi se používají metody s vyšší přesností, které pracují na podobném principu jako metoda Eulerova, ale mají poněkud složitější vzorce. K nejznámějším patří metody Runge-Kutta, a to 2.řádu a 4.řádu. Zájemci najdou jejich popis v každé příručce numerické matematiky, vzorce uvádíme zde.
2.2.3  Stabilita numerického řešení
Vedle problémů s chybou numerického řešení diferenciálních rovnic mohou ještě vyvstat problémy s jeho stabilitou. Je-li numerické řešení stabilní, tak se výše popsané chyby vnášené do výpočtu v každém kroku vhodně utlumují a nerostou. Naopak, při nestabilitě se tyto chyby kumulují a mohou narůst tak, že výsledky jsou zcela nepoužitelné. Na stabilitu řešení má opět vliv velikost kroku h, a to tak, že s rostoucím krokem se pravděpodobnost nestability zvyšuje. Pro každou diferenciální rovnici existuje krok při kterém nestabilita začíná - hovoříme o mezním kroku stability řešení. Problém nestability je ilustrován na obr. 2.4., kde jsou tabulka a graf numerického řešení rovnice  


  Soubor:Obrázek9.png Soubor:Obrázek10.png   (2.20)
získané Eulerovou metodou s různým krokem. Při kroku 0.2 je řešení stabilní a blíží se řešení analytickému, při kroku 0.5 je sice řešení ještě stabilní, ale informace o průběhu funkce je velmi hrubá a při kroku 1.0 je řešení nestabilní, kmitá a výsledky jsou zcela nesmyslné - z tvaru analytického řešení jednoznačně vyplývá, že výsledky musí být z intervalu (0;1ñ .


t  Y i   Y i Y i    y anal  
  (h=0.2) (h=0.5) (h=1.0)   
0 1 1
0.2 1.000      0.961
0.4 0.920      0.852
1.5   1.000   0.779
0.6 0.773      0.698
0.8 0.587      0.527
1.0 0.399 0.500 1.000 0.368
1.2 0.240      0.237
1.4 0.125      0.141
1.5   0.000   0.105
1.6 0.055      0.077
1.8 0.020      0.039
2.0 0.006 0.000 -1.000 0.018
:
3.0 0.000 0.000 3.000 0.000
Soubor:Obrázek11.png
Obr. 2.4.  Ukázka k problému stability numerického řešení ODR  
Pokud je řešení nestabilní, pomůže ve většině případů zmenšení kroku.
Z toho, co bylo řečeno o chybách a stabilitě, vyplývá, že nemůžeme numerické řešení matematických modelů provádět mechanicky, ale musíme nad ním přemýšlet a vypracovat si vždy způsob jak výsledky kontrolovat. Protože lze předpokládat, že budeme většinou řešit problémy z praxe, je nám velkou pomocí právě možnost kontroly výsledků srovnáním s realitou, s fyzikální podstatou veličin a s praktickými omezeními jejich hodnot.
 


na začátek kapitoly
 
2.2.4  Stanovení hodnot parametrů modelu
Při odvozování matematického modelu nebo i jen při vyjadřování některých dílčích závislostí veličin v modelu často používáme parametrů (konstant), jejichž hodnoty předem neznáme a musíme je nějakým způsobem stanovit. Hovoříme o tzv. identifikaci modelu. Problematika identifikace představuje dost rozsáhlou oblast, my se zde budeme zabývat pouze nejjednodušší metodikou, kterou bychom mohli běžně použít. V matematice se probírá postup aproximace empirických dat metodou nejmenších čtverců (prokládání přímky či jiné funkce naměřenými daty apod.). Tato metodika je sice obecně použitelná, ale nedá se využít tehdy, kdy je potřeba dosáhnout souhlasu výsledků řešení diferenciálních rovnic s nějakými empirickými daty. V tomto případě je vhodnější použít metod optimalizace.
Optimalizace  je matematický resp. početní postup, kterým hledáme extrém nějaké funkce. Této funkci říkáme účelová nebo kriterium optimalizace a její tvar musíme předem určit tak, abychom optimalizací dosáhli požadovaného cíle. Hodnotu kritéria optimalizace můžeme ovlivnit změnou zvolených parametrů matematického popisu optimalizační úlohy, kterým říkáme optimalizační proměnné. Extrém (buď maximum nebo minimum) hledáme na nějaké množině, z níž hodnoty optimalizačních proměnných vybíráme. Na této množině může být více extrémů, kterým říkáme extrémy lokální (jsou na podmnožinách dané množiny) a jeden extrém globální, který právě hledáme. Při většině metod numerické optimalizace musíme zadat nějakou počáteční hodnotu pro každou optimalizační proměnnou, tzv. nástřel. Lokální extrémy jsou  nepříjemné tím, že v nich optimalizační postupy někdy „uvíznou“ a pak nemohou dosáhnout extrému globálního. Pomoci si můžeme tak, že zvolíme jiný nástřel, ale musíme být schopni (podle znalosti řešeného problému a charakteru výsledků) rozpoznat, zda je nalezený extrém lokální či globální, což nebývá vždy jednoduché a vyžaduje to určitou zkušenost. Pokud se týče optimalizačních proměnných, může být jejich výběr co do rozsahu hodnot neomezený, tj. z intervalu (-¥,+¥), pak mluvíme o hledání volného extrému, nebo omezený, např. pro každou optimalizační proměnnou máme určen uzavřený interval z něhož mohou být její hodnoty vybírány, a pak mluvíme o hledání vázaného extrému. Ve většině praktických optimalizačních úloh hledáme vázaný extrém, protože vždy existují nějaká technická nebo technologická omezení.
  Základním problémem optimalizace je volba vhodného optimalizačního kritéria. V případech identifikace matematických modelů by mělo vyjadřovat shodu modelu se skutečností. Při identifikaci hledáme takové hodnoty parametrů modelu, aby odezva modelu na změnu vstupu byla co nejbližší odezvě reálného systému na stejnou změnu vstupu. Předpokládejme tedy, že jsme na vstup reálného systému přivedli definovaný (tj. se známým časovým průběhem) signál u(t) a na výstupu jsme naměřili časově proměnný signál yE(t). Stejný signál u(t) přivedeme na vstup modelu a zaznamenáme výstupní signál  yM(t). Pokud má model odpovídat skutečnosti, neměly by se časové průběhy těchto signálů podstatně lišit. Optimalizační kritérium vytvoříme tak, aby kvantitativně vyjadřovalo míru shody obou průběhů. Prakticky vždy se používá osvědčené kritérium součet čtverců odchylek, které má pro případ porovnávání obou průběhů v n bodech tvar


  Soubor:Obrázek12.png   (2.21)
nebo v případě hodnocení shody na spojitém intervalu <ab tvar


  Soubor:Obrázek13.png   (2.22)
Tato kritéria nabývají při naprosté shodě obou průběhů hodnoty 0, jinak se nule blíží. Jestliže jich použijeme jako účelové funkce, pak optimalizací hledáme jejich minimum. Jestliže bychom potřebovali porovnávat průběh více výstupů současně, např.  y(t) a z(t), pak jednoduše použijeme účelové funkce ve tvaru (např. pro spojitý případ)


  Soubor:Obrázek14.png   (2.23)
nebo obecněji


  Soubor:Obrázek15.png   (2.24)
kde v1 v2  jsou váhy, pomocí kterých můžeme podle potřeby upravit vliv výsledku porovnání jednotlivých průběhů na hodnotu účelové funkce. Podle stejného principu postupujeme i v případě porovnávání tří a více průběhů.
2.2.5  Simulační programovací jazyky
Pro řešení matematických modelů existuje celá řada simulačních programovacích jazyků, které umožňují efektivní práci bez hlubších znalostí programování počítačů. Jejich podstata je různá, např. existují jazyky rovnicově orientované (programují se zápisem rovnic modelu), blokově orientované (programují se propojováním funkčních bloků, které realizují základní operace, např. integraci, různé matematické funkce atd.), modulově orientované (obsahují moduly představující již hotové modely zařízení nebo procesů a ty se pak propojují pomocí signálů reprezentujících toky hmot a energií) apod. Mají obvykle zabudovány různé numerické metody pro řešení modelových rovnic, dobrou grafickou prezentaci výsledků simulace a možnost práce se vstupními i výstupními datovými soubory. Jsou velmi často oborově zaměřené.
My pro naši potřebu budeme používat jednoduchý, poměrně univerzální, blokově orientovaný jazyk PSI, který je k dispozici na síti v učebnách VŠCHT. Je to blokově orientovaný jazyk a byl vyvinut na univerzitě v holandském Delftu. Jeho předností je to, že je speciálně zaměřen na řešení soustav obyčejných diferenciálních rovnic. Z hlediska uživatele je velice příznivé, že je v základě zvládnutelný zhruba během dvou hodin. Součástí této učebnice je i jeho volně šiřitelná demoverze, která umožňuje řešit úlohy malého rozsahu. Popis jazyka PSI a možností demoverze je v příloze této učebnice.
Dalším simulačním nástrojem, který je k dispozici na síti VŠCHT, je rovněž blokově orientovaný SIMULINK, který je součástí programového balíku MATLAB. Jeho určitou nevýhodou je, že k jeho používání je nutné nejprve zvládnout základy MATLABu, což vyžaduje poměrně dost času.
 


na začátek kapitoly
 
2.2.6  Příklady simulace
Příklad S-1
Úkol:
Řešit diferenciální rovnici (2.20), tj.


  Soubor:Obrázek16.png

Soubor:Obrázek17.png

 
Eulerovou metodou s krokem 0,2 pomocí jazyka PSI a simulací získaný výsledek porovnat s analytickým řešením (rovněž naprogramovaným v jazyku PSI) výpočtem chyby. Totéž řešení provést pomocí metody Runge-Kutta 2.řádu a výsledky porovnat.
 


Výpis programu: % Příklad S-1 (řešení dif. rovnice)

y     =  INT(-2*TIME*y PAR:1);    % numerické řešení

yan  = exp(-(TIME^2));                  % analytické řešení

ch   =  y-yan;                                   % chyba

 

Ukázka výsledků:

Eulerova metoda, krok 0.2,  max.chyba 7.5 . 10-2

Soubor:Obrázek19.png

Metoda Runge-Kutta 2.řádu, krok 0.2, max.chyba -5 . 10-3

Soubor:Obrázek20.png

Program v PSI: soubory: Prikl_S-1.PSM , Prikl_S-1.MOD
 


na začátek kapitoly
 
Příklad S-2
Úkol:
Simulovat reakci výstupní teploty elektrického ohřívače vody (viz příklad M-1) na skokovou změnu teploty vstupující vody. Matematický model ohřívače je


    Soubor:Obrázek22.png
Hodnota teploty T0 odpovídá ustálenému stavu.
Doba simulace je 60 minut, skok vstupní teploty je proveden v 5.minutě. Číselné hodnoty parametrů a jejich rozměry jsou patrné z výpisu programu. K numerickému řešení je použito metody Runge-Kutta 2.řádu, krok výpočtu je 0,001.


Výpis programu:
% Příklad S-1 (simulace reakce T2 na skokovou změnu T1)

T2 = INT(Q*(T1-T2)/V+P*eta/(V*rocpPAR:T0); % teplota vody na výstupu (°C)

V = 5;                                         % objem ohřívače (l)

Q = 0.5;                                      % průtok vody (l/min)

T0 = 37.91;                                 % výst.teplota v ust.stavu (°C)

rocp1*4187;                            % součin hustoty a měr.tepla vody (J/l/K)

T1 = BNG(time PAR:15,18,5);    % skok teploty na vstupu (°C)

P = 60000;                                  % příkon topení (J/min)

eta = 0.8;                                     % účinnost topení (1)

 

Ukázka výsledků:
Program v PSI: soubory: Prikl_S-2.PSM , Prikl_S-2.MOD
Z výsledku je vidět, že po změně vstupu se teplota výstupu ustaluje na nové hodnotě - v čase 59.04 minut je to  40.9092 °C (viz graf).
 


na začátek kapitoly
 
Příklad S-3
Úkol:
Provést identifikaci modelu elektrického ohřívače vody (viz příklad M-1) za předpokladu, že není známa hodnota účinnosti topení  h. Pro identifikaci byl proveden experiment, kdy byl po zapnutí topení naměřen následující časový průběh teploty :


čas (min) 0 5 10 15 20 25 30 35 40 45 50 55 60
teplota (°C) 15 26 31 34 37 39 40 40 40 40 41 41 41
Simulační model ohřívače je popsán v příkladu S-2, program je ještě třeba doplnit o příkaz umožňující zpracovávat experimentální data a příkaz pro výpočet optimalizačního kritéria. Protože model dává výsledky prakticky spojité, použijeme kritéria podle rovnice (2.22), kde meze integrálu budou 0 a 60 min, místo yM bude teplota T2M  vypočtená podle modelu a místo yE  naměřená teplota T2E. Výsledky experimentu musí být v tom případě k dispozici rovněž jako spojité, což zajistí příkaz FNG lineární interpolací v zadané tabulce. Odhadnutá hodnota (nástřel) účinnosti bude např. 0.8. Pro určení její skutečné hodnoty použijeme optimalizační metody, která je součástí jazyka PSI. Výsledný program je následující:


Výpis programu:
% Příklad S-3 (identifikace modelu ohřívače)
% výst.teplota - model(°C)

T2M = INT(Q*(T1-T2M)/V+P*eta/(V*rocp) PAR:T1); 

V = 5;                                            % objem ohřívače (l)

Q = 0.5;                                         % průtok vody (l/min)

rocp= 1*4187;                               % součin hust. a měr.tepla vody (J/l/K)

T1 = 15;                                         % teplota vody na vstupu (°C)

P = 60000;                                     % příkon topení (J/min)

eta = PAR(0.8);                              % účinnost (optimalizační proměnná)

T2E = FNG(time PAR:0,60,1,T2mer);  % výst. teplota - experiment (°C)

krit= INT((T2M-T2E)^2 PAR:0);         % kritérium optimalizace 

Nastavení parametrů optimalizace:
1. položka menu Optimization / Optimization Data


Criterion: krit (jméno bloku, kde se počítá hodnota kritéria)
Initial Stepsize: 0.2 (počáteční krok změny optimalizační proměnné při vyhledávání)
Stop Accuracy: 0.0001 (přesnost pro ukončení optimalizace)
Maximum No of Iterations: 50 (maximální počet vyhledávacích kroků)
Optimization Method: Pattern Search + PT (metoda vyhledávání s předčasným ukončením)
2. položka menu Optimization / Variables to Optimize 


Variable: eta (jméno optimalizační proměnné - blok PAR nebo CON)
Value: 0.8 (počáteční hodnota optimalizační proměnné  - "nástřel")
Min: 0.5 (dolní mez optimalizační proměnné)
Max: 1.0 (horní mez optimalizační proměnné)
Gain:  1 (násobná konstanta - sjednocení řádů při více optimalizačních proměnných)
Optimalizace se spouští položkou menu Optimization / Start Optimization, průběh se vypisuje v textovém okně.


Výsledek simulace před optimalizací

Soubor:Obrázek24.png

Výsledek simulace po optimalizaci

Soubor:Obrázek25.png


Program v PSI: soubory: Prikl_S-3.PSM , Prikl_S-3.MOD
Hodnota kritéria se optimalizací změnila z 367.924 na 7.26312 , výsledná hodnota účinnosti je 0.89858, čili prakticky 0.9.