Simulace dynamických systémů v jazyce Java

© Jiří Macur, 2006

1         Úvod

Při simulaci dynamických systémů reprezentovaných soustavou diferenciálních rovnic (2.2) se používá řada numerických metod, vyvíjených od počátku tohoto století. Metody lze rozčlenit podle mnoha kriterií do různých tříd a studovat přitom jejich efektivitu z hlediska přesnosti a numerické stability a náročnosti. Šíře teorie v této oblasti často odrazuje od použití numerických metod v běžné praxi, proto se zde seznámíme pouze s jednoduššími postupy, které postačí na simulaci demonstrovaných soustav.

Poznámka: je třeba poznamenat, že pro chaotické systémy stejně každá metoda dříve nebo později selže ve smyslu existence konečného času, po kterém je každá požadovaná tolerance překročena. Legitimitu numerických pokusů simulovat chování nelineárních systémů naštěstí do jisté míry zachraňuje teorém "stínové trajektorie", který dokazuje existenci reálné trajektorie v okolí trajektorie simulované. Jinými slovy, přestože přesná predikce vývoje systému není možná, lze systém zkoumat alespň statiticky nebo vytváře scénáře možných stavů a přechodů mezi nimi.

K simulaci chování systémů použijeme kvůli jeho univerzálnosti jazyk Java. Je dostupný prakticky v každém prostředí, objektově orientovaný, přiměřené jednoduchý a vytvořené programy lze používat v prostředí Internetu bez dalších nástrojů. Vyšší režie při interpretaci kódu v prostředí JVM vzhledem k rychlosti dnešních procesorů nevadí a navíc lze v případě potřeby použít i překladače do nativního kódu procesoru. Pro naše účely postačí volně distribuované prostředí JDK verze 1.2 a vyšší, které je dostupné v Internetu zdarma. K vlastní vizualizaci a uživatelskému rozhraní pro ovládání programů použijeme nejjednodušší standardní knihovnu awt (Abstract Window Toolkit), přestože je v současnosti preferována daleko komfortnější, ale také komplikovanější knihovna swing.

Programy budeme vytvářet v podobě tzv. Java applets tak, aby je bylo možné spouštět v prostředí běžných prohlížečů Internetu.

Od čtenáře předpokládáme zběžnou zkušenost s jazykem Java, kterou může získat například v publikacích [1,2]. Tento text rozhodně nelze chápat jako výklad nuancí programovacího jazyka Java. Důraz je kladen zejména na vlastní simulaci a její výsledky z hlediska teorie dynamických systémů. Proto jsou některé konstrukce silně zjednodušeny tak, aby jim mohli porozumět i neprogramátoři – z programátorského hlediska jsou málo robustní a někdy i nepřípustně mrhající systémovými zdroji. Vylepšení uváděných programů jak z hlediska vyššího komfortu uživatele, tak vyšší efektivnosti výpočtů, již ponecháváme na čtenáři.

V našich programech nebudeme vytvářet balíky Java, také mechanizmus dědění budeme kvůli přehlednosti používat střídmě. Každá implementace bude co nejpodrobněji komentována přímo v programu, v případě nutnosti budou návrhy implementací na některých místech i zopakovány tak, aby se čtenář v textu neztratil.


Obsah