Simulace je velmi rychle se rozvíjející fenomén poslední doby. Představte si, že chcete postavit most, ale díky simulaci už teď můžete zjistit, kde jsou jeho slabiny. Tento článek je krátkým populárním úvodem do světa simulací…
V poslední době je výkon počítačů soustřeďován na velice zajímavou oblast - simulaci. Počítačovou simulací zde nebudeme chápat počítačové hry, ale zjišťování chování nějakého systému pomocí výpočtu jeho matematického modelu. Pod pojmem "systém" si můžeme představit nejen elektrický obvod, ale i různé mechanizmy, tepelné soustavy nebo například finanční trh; simuluje se i model počasí ve světě a podle výsledků se vytváří předpovědi počasí. Dokonce lze nasimulovat i chování velké skupiny lidí například při demonstracích. Jak ale dokážeme takové rozličné soustavy simulovat? Odpověď je v matematice a ve fyzice (která je ale pouhou aplikací matematiky). Rád bych se zde pokusil nastínit alespoň základní myšlenku simulace, především elektrotechnické, kterou lze postavit na známých principech a její výsledky se velmi přibližují skutečnosti. Samozřejmě nás budou zajímat takové stavy, ve kterých se něco mění, stavy dynamické.
Příklad simulace - rozběh a zatížení stejnosměrného derivačního motoru (jedna z mých semestrálních prací)
V následujícím seriálu budeme potřebovat alespoň středoškolskou matematiku a fyziku. Neříkám, že z mého výkladu nepůjde bez toho nic pochopit, ale tyto znalosti jsou velkou výhodou. Přes určitý závan odbornosti ale berte vše pouze jako exkurzi do tajů simulací. Skutečné odborné simulace bývají časově náročnější, především teoretická příprava, jak později sami uvidíte.
Pro začátek zkusím vysvětlit pár principů, které snad pomůžou ke správnému pochopení dynamických jevů. Pro jednoduchost vytáhněme starého dobrého Newtona a jeho zákony. Hlavně nás bude zajímat pohybový zákon, tj. že síla je úměrná součinu hmotnosti a zrychlení
což znamená: je-li těleso v klidu nebo rovnoměrném pohybu, je výslednice sil na něj působících nulová a naopak: je-li výslednice sil nenulová, potom těleso zrychluje nebo zpomaluje. Pokud chceme znát sílu, která působí na těleso (resp. naopak), musíme znát jeho hmotnost a zrychlení, kterého těleso dosahuje. Hmotnost běžného tělesa nepodléhá relativitě - je konstantní, zůstává nám tedy zrychlení. To je definováno jako změna rychlosti za časový interval - tak alespoň zní středoškolská poučka. Jednoduché, ale ne tak přesné. Často se totiž zapomíná na přívlastek "střední" zrychlení, tj. průměrná hodnota za daný časový interval.
Není to ale úplně správné. Zrychlení (změna rychlosti) totiž vůbec nemusí být konstantní. V případě, že nás zajímá jen stav na konci zrychlení, popř. nějaká střední hodnota zrychlení, nemá smysl se zabývat simulací. V simulacích nás ale nezajímá nějaký rize statistický výsledek, nýbrž průběh v každém okamžiku během celého dynamického, neboli přechodného, děje. Na tento problém pamatuje hlavně vyšší matematika a nabízí nám tzv. derivaci. K jejímu pochopení nám stačí trocha představivosti.
Pro názornost: máme např. v čase 1s rychlost 5m.s-1 a v čase 3s rychlost 7m.s-1; můžeme si vypočítat střední hodnotu zrychlení, přesně podle středoškolské "kuchařky".
Hodnota 2m.s-1 je rozdílem rychlostí (cizím slovem diferencí) a časový interval 2s nazveme krokem. Kdybychom si sedli do auta a sešlápli plyn až na podlahu, určitě ucítíme urychlující sílu, která ale bude časem slábnout - bude klesat zrychlení. Tento jev lze pozorovat i na tachometru: vezmeme si stopky a každých pět sekund (což bude náš krok) budeme zaznamenávat okamžitou rychlost. V každém intervalu vypočítáme rozdíl hodnot na začátku a na konci a po vydělení hodnotou kroku získáme střední hodnotu zrychlení v každém kroku (intervalu po pěti sekundách). Pro získání lepšího přehledu o průběhu zrychlení (a v podstatě hlavně o průběhu rozjezdové síly - F=m*a) můžeme krok zkrátit na dvě nebo jednu sekundu. Můžeme se vybavit dokonce počítačem a měřícím zařízením a získávat hodnoty po kroku v řádu milisekund. Z pohledu matematiky ale budeme stále získávat jen střední hodnoty zrychlení. Abychom uspokojili svoji touhu po přesnosti, museli bychom zvolit nekonečně malý krok! Ano - nekonečně malý! Jen tak můžeme zajistit, že mezi těmito dvěma vzorky se nebude nacházet jiný. Tomuto rozdílu se říká limitní rozdíl neboli derivace. Je ale třeba připomenout, že s pojmem "nekonečně malý" jsme se dostali na půdu matematickou, tedy čistě teoretickou. Není to ale samoúčelné, protože tento pohled nám ukazuje pravou a bezchybnou tvář našeho světa; pomocí derivací (a integrálů) byly popsány základní fyzikální zákony našeho světa (Maxwellovy rovnice), které dosud nikdo nevyvrátil. Derivace rychlosti v čase je zrychlení, jinými slovy míra změny rychlosti; obecně je derivace míra změny nějaké veličiny. V našem příkladu tedy z derivace rychlosti v čase určíme sílu, kterou vyvíjí motor (prostřednictvím převodů a kol). Čím větší je hodnota derivace, tím více daná veličina poroste. Po pochopení tohoto zvláštního matematického prvku se ale paradoxně budeme muset vrátit téměř až ke stopkám a středním hodnotám. Dnes totiž k matematickým výpočtům využíváme téměř výhradně počítač. Když pozapomeneme na algebraické softwary, které dokáží řešit problémy analyticky, zůstane nám pouze počítání s konkrétními čísly (tzv.diskrétními body). Z pohledu možností počítače můžeme hned zapomenout na pojem nekonečna. Máme omezenou kapacitu paměti a výsledek obvykle také čekáme za určitý konečný čas. Přistupujeme tedy k takzvanému vzorkování, což není nic jiného, než výše demonstrované měření rychlosti v autě, např. každych pět sekund. Podobně ale můžeme filozofovat nad přesností naměřené hodnoty, protože nekonečně přesné číslo musí být (v obecném případě) vyjádřeno nekonečným počtem desetinných míst, což opět naše počítače nedokáží. Přijatelné úpravě skutečné hodnoty se říká kvantování a můžeme si jej představit jako jakési zaokrouhlení, které by mělo vyhovovat jak nám (z hlediska přesnosti) tak i počítači (z hlediska objemu dat). Obecně se proces kvantování a vzorkování nazývá diskretizací. S rozmachem počítačů se tedy rozvinul obor numerické matematiky, který se zabývá transformací matematické (spojité) analýzy do její diskrétní, numerické podoby. Samozřejmě nelze čekat, že je tato transformace bezztrátová. Uplatňují se zde chyby spojené s diskretizací, protože zanedbáváme časové okamžiky (obecně body) mezi začátkem a koncem vyšetřovaného intervalu, ať už z důvodu rychlosti výpočtu (kratších intervalů je více, vyžadují více výpočtů) nebo z důvodu možností výpočetní techniky (přesnost čísel v počítači je konečná, v některých případech může být rozhodující).
Simulace soustavy tělesa na pružině - tlumený kmitavý pohyb
Už tedy víme, že bez derivace se neobejdeme. Dokonce i víme, že budeme potřebovat její numerickou podobu, nazývanou též diferencí. Budeme se snažit využít fyzikální poznatky matematicky vyjádřené ke sledování dynamických dějů v různých soustavách. Simulaci si vyzkoušíme na učebnicovém příkladu břemene na pružině, ale nejprve uvedu jednodušší příklady - dynamické chování obvodů s cívkami a kondenzátory (RLC obvody). Po tomto krátkém úvodu se už můžete těšit na pokračování, kde si pohrajeme s derivací a diferencí a ukážeme si, jak tuto záludnost naprogramovat...