Simulace – 5.díl
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Simulace – 5.dílSimulace – 5.díl

 

Simulace – 5.díl

Google       Google       3. 6. 2006       14 893×

Článek volně navazuje na předchozí díly a rozebírá nejdůležitější vlastnosti Eulerovy metody řešení Cauchyho počáteční úlohy, chyby a nestability výpočtu.

Reklama
Reklama
podrobněji. Vezmeme si ten nejjednodušší matematický model a zkusíme ho řešit různými metodami. Pro začátek si ale ukážeme příklad rozboru jedné metody a v dalším pokračování se podíváme na srovnání s metodami složitějšími. K velkému překvapení ale na chvilku zapomeneme na programovací jazyk a podíváme se do tabulkového editoru. Proč? Vytvoření celého uvedeného souboru mi trvalo dvacet minut se všemi nadpisy a (drobnou) grafickou úpravou. Vytvoření simulačního programu sice není problém, ale s podobným grafickým výstupem by to trvalo trošku déle. Koneckonců, v tomto dílu nám nepůjde o programování, ale o metodu.

Od píky

Vezměme si tedy nejjednodušší model, který popisuje například základní vlastnosti (odborně řečeno lineární model prvního řádu). A protože lenost zasáhla i mou osobu, odvolám se na své předcházející články o simulaci. První oblast zájmů – abychom měli nějakou hodnotnou vztažnou informaci – bude analytické řešení dané úlohy. Jen připomenu, že jde o diferenciální rovnici se speciální (konstantní) pravou stranou, jejíž řešení jsem popsal v článku simulace3. Výsledkem je exponenciální funkce proudu, která je závislá na proměnné času (proud se mění s časem). Tento výsledek považujeme za přesný, protože jsme jej dostali analytickým postupem, který vychází z přesně definovaných operací nad množinou komplexních čísel – žádné zanedbávání drobných čísel, žádné zaokrouhlování, jen exaktní matematika (pozn.: Těm z vás, kteří neovládají vyšší matematiku, musí stačit výsledek – poslední řádek odvození).

Tuto časovou funkci (průběh proudu cívkou v závislosti na čase) si vykreslíme do grafu pro trochu vyšší počet hodnot. Je to taková příprava na porovnání s numerickým řešením, kde budeme potřebovat větší množství kroků.

Nyní přistoupíme k výpočtu numerickému pomocí základní Eulerovy metody. Je to metoda tzv. jednokroková, což znamená, že k výpočtu následující hodnoty nám postačí jeden vzorec. Opět jsme ho tu už měli, takže jen pro zopakování:

Problém, jak zapsat tento vzorec do buňky v Excelu, jsem vyřešil za vás, ale pro vysvětlení: odpor R, indukčnost L a napětí U jsou z pohledu jednoho kroku řešení konstantní. Proto jsem uvedl absolutní odkazy (se znaky $). Jedinou proměnnou je stavová veličina – proud, který získáme v každém kroku jako výsledek kroku předcházejícího. Ještě nesmíme zapomenout celý výsledek vynásobit krokem a přičíst jej k předcházející hodnotě výsledku. Potom stačí už jen vzorec překopírovat na celý sloupec a výsledné hodnoty vykreslit.

Pod lupou

Abychom mohli nějak danou metodu ohodnotit, zavedeme pojem odchylky numerického řešení (chyby výpočtu). Bude to rozdíl mezi hodnotou přesnou a hodnotou získanou numerickým počtem. Odchylku jsem převedl na procenta správné hodnoty.

Pokud se podíváme na oba průběhy proudu, zjistíme, že proud získaný numerickým řešením je větší (pro názornější ukázku jsem zvolil krok dt = 0,01).

Nabízí se myšlenka, že pokud dimenzujeme skutečný obvod na základě výsledku simulace, budeme mít vždy nějakou tu rezervu. Je to sice pravda, ale ta rezerva se pohybuje ve stejných řádech jako krok – tedy setiny, tisíciny, atd. Zkusme si ale zvětšit krok simulace (třeba na dt = 0,1) a podívejme se, jak bude vypadat výsledek.

S rostoucím krokem se zvětšuje i chyba výpočtu, přičemž platí předchozí vztah mezi chybou a velikostí kroku – pohybují se ve stejném řádu. Pokud si s velikostí kroku zahrajeme až moc (v našem případě dt = 0,2), výsledek se nám odporoučí do neskutečných hodnot.

Proč? Odpověď musíme najít v několika prvních krocích výpočtu. První krok je totiž počítán pouze jako součin budící veličiny (napětí) a kroku simulace. Pokud tedy bude krok velký, bude relativně velký i výsledek po prvním kroku, resp. chyba hned v prvním kroku bude velká. Ve druhém kroku se celá záležitost může a nemusí vyřešit – vše záleží na velikosti kroku. V případě, že rovnice modelu ve druhém kroku nabude hodnoty kladné, je tu naděje, že se budoucí výsledek ustálí na správné hodnotě (s tím vědomím, že přechodný děj neodpovídá skutečnosti). Pokud ale hodnota modelu dosáhne záporných hodnot, výsledek začne kmitat z kladných hodnot do záporných a jeho absolutní hodnota poroste. Můžeme to nazývat rozkmitáním systému nebo divergencí výsledku. Při běhu simulace ale často nemůžeme kontrolovat chybu (neznáme analytické řešení) a kmitání v systémech vyššího řádu je zcela normální. Obecně platí, že velikost kroku by měla být o mnoho menší než nejmenší časová konstanta systému. V případě systému prvního řádu je časová konstanta jen jedna a je rovna kladně vzaté převrácené hodnotě řešení charakteristické rovnice. Následující zápis vychází z výše uvedeného analytického řešení.

V našem případě je tedy volba dt = 0,01 postačující.

Eulerova metoda tedy není za všech okolností stabilní. V případě, že vhodně zvolíme krok, se nemusíme tomuto stavu ani přiblížit. Některé složitější systémy vyšších řádů ale mohou dosáhnout těchto stavů v nečekané okamžiky a v tom případě se můžeme jen divit, jak nám to ta simulace vychází. Nemusí to ale vždy být problém systému, naopak, dost často to bývá problém metody výpočtu. Proto jsou tu metody další, složitější, náročnější, které tento problém řeší. O jiných metodách si ale povíme příště.

Krok-sun-krok

Tento problém kroku lze řešit celkem elegantně, ale už musíme programovat. Můžeme totiž stanovit maximální odchylku mezi dvěma po sobě jdoucími kroky (rozdíl mezi i(n) a i(n+1)). Pokud bude odchylka větší než maximální, program zopakuje výpočet, ale zmenší podle nějakého pravidla krok výpočtu (zpravidla vydělí dvěma). Podobně je zkontrolován i výsledek po změně kroku. Rozhodování ilustrují následující dva obrázky:

Hodnota kroku výpočtu se zvětší v případě, že odchylka mezi dvěma kroky je malá (obvykle o řád nebo dva řády menší než maximální odchylka). Tímto postupem sice vnášíme do algoritmu další výpočty, ale v případě, že se stavová veličina ustálila, je přesnější výpočet (s malým krokem) zbytečný. Celková doba výpočtu může být (a většinou bývá) potom dokonce i kratší. Tento způsob používá i známý a často používaný program MATLAB a jeho nadstavba Simulink, kde je označován jako variable-step (proměnný krok), ale jeho implementace je daleko složitější a obsahuje i prvky proti rozkmitání kroku. Uvedený základní princip lze bez problémů naprogramovat pomocí podmínek.

Když je problémů málo, určitě se najdou další

V některých případech na vás může vybafnout ještě jeden záludný problém. Vyskytuje se ale jen u systémů, jejichž parametry jsou řádově značně odlišné. Je to problém interpretace čísel v počítači, jinak nazývaný zaokrouhlovací chybou. Číslo je totiž interpretováno dvěma způsoby – pevnou a plovoucí řádovou čárkou. V pevné řádové čárce osobní počítače (a tedy i simulace) obvykle nepracují, neboť mají implementovánu variantu druhou, lepší. Plovoucí řádová čárka ale skrývá jeden neduh. Číslo je uloženo jen na omezený počet platných číslic a doplněno kódem exponentu (řádu). Takto je zvětšen rozsah hodnot na neskutečných 10^(+/−300) (přibližně). Přesto ale dokáže uchovat jen omezený počet platných číslic. Upozorňuji na to proto, že ve výpočtech se může objevit kombinace postupných násobení dvou čísel řádově značně odlišných (např. 11e−6 × 1.12), přičemž např. jeden z operandů je stavovou (a tedy měnící se) veličinou. Zaokrouhlovací chyba se neprojeví jen jednou, ale postupně se zvětšuje a může dost ovlivnit výsledek, odborně se to nazývá kumulativní chyba. Nejnázornější by to mohlo být v některém z programovacích jazyků při výpočtech ve float. Proto je lepší (ale časově náročnější) používat typy objemnější, např. double. V Excelu se zaokrouhlovací chyba ukázat nedá, protože čísla v něm jsou interpretována ve velkém rozsahu (tj. přesnosti), větším než double formát.


Pro vás, kteří byste si chtěli se simulací v Excelu vyhrát, tu mám mou skromnou verzi ke stažení: num_derivace.xls (380 kB)

O čem to vlastně bylo?

Chtěl jsem vám v tomto dílu ukázat nejen možnost simulovat v tabulkovém editoru, ale i střízlivý přístup k výsledku simulace a jedno z možných řešení problému s krokem. V žádném případě se nejedná o vysoce odborné záležitosti. Moderní matematik by se nad tímto článkem pousmál. Přesto je ale spousta nematematických oborů, kde se využívají simulace i v této jednoduché podobě. V některém z příštích dílů se podíváme na zpětnou Eulerovu metodu, ve které otázka stability odpadá, ale vyvstávají další problémy (jak to tak chodí).

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
(fotka) Ing. Matěj PáchaAutor je studentem doktorského studia na Elektrotechnické fakultě Žilinské univerzity, obor Elektrická trakce. Mezi koníčky patří hudba a hra na baskytaru.
Web    

Nové články

Obrázek ke článku NEWTON Media prohledá 200  milionů mediálních zpráv během sekund díky Cisco UCS

NEWTON Media prohledá 200 milionů mediálních zpráv během sekund díky Cisco UCS

Česká společnost NEWTON Media provozuje největší archiv mediálních zpráv ve střední a východní Evropě. Mezi její zákazníky patří například ministerstva, evropské instituce nebo komerční firmy z nejrůznějších oborů. NEWTON Media rozesílá svým zákazníkům každý den monitoring médií podle nastavených klíčových slov a nabízí online službu, kde lze vyhledat mediální výstupy v plném znění od roku 1996.

Reklama
Reklama
Obrázek ke článku Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Delphi 10.1.2 (Berlin Update 2) – na co se můžeme těšit

Touto roční dobou, kdy je zem pokrytá barevným listím a prsty křehnou v mrazivých ránech, se obvykle těšíme na zbrusu novou verzi RAD Studia. Letos si však ale budeme muset počkat na Godzillu a Linux až do jara. Vezměme tedy za vděk alespoň updatem 2 a jelikož dle vyjádření pánů z Embarcadero se budou nové věci objevovat průběžně, pojďme se na to tedy podívat.

Obrázek ke článku Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Konference: Moderní datová centra pro byznys dneška se koná už 24. 11.

Stále rostoucí zájem o cloudové služby i maximální důraz na pružnost, spolehlivost a bezpečnost IT vedou k výrazným inovacím v datových centrech. V infrastruktuře datových center hraje stále významnější roli software a stále častěji se lze setkat s hybridními přístupy k jejich budování i provozu.

Obrázek ke článku Konference: Mobilní technologie mají velký potenciál pro byznys

Konference: Mobilní technologie mají velký potenciál pro byznys

Firmy by se podle analytiků společnosti Gartner měly  rychle přizpůsobit skutečnosti, že mobilní technologie už zdaleka nejsou horkou novinkou, ale standardní součástí byznysu. I přesto - nebo možná právě proto - tu nabízejí velký potenciál. Kde tedy jsou ty největší příležitosti? I tomu se bude věnovat již čtvrtý ročník úspěšné konference Mobilní řešení pro business.

loadingtransparent (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })();
Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý