MASARYKOVA UNIVERZITA Přírodovědecká fakulta JIŘÍ HŘEBÍČEK JAROSLAV URBÁNEK ZDENĚK POSPÍŠIL Úvod do matematického modelování s použitím Maple Brno 2010 ii Předmluva iii iv Obsah 1 Úvod do matematického modelování a jeho členění 1 1.1 Matematický model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.1 Základní prvky matematického modelu . . . . . . . . . . . . . . . . 4 1.1.2 Matematické struktury (omezující podmínky) v matematickém modelu 5 1.1.3 Řešení matematického modelu . . . . . . . . . . . . . . . . . . . . . 6 1.2 Klasifikace matematických modelů . . . . . . . . . . . . . . . . . . . . . . . 7 1.3 Modelování neurčitosti, nejistoty a rizika . . . . . . . . . . . . . . . . . . . . 9 1.3.1 modelování neurčitosti . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 Metodologie matematického modelování 13 2.1 Obecné zásady matematického modelování . . . . . . . . . . . . . . . . . . . 13 2.2 Matematické modelování s využitím ICT . . . . . . . . . . . . . . . . . . . . 16 2.2.1 Identifikace modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2.2 Sestavení modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2.3 Implementace modelu . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.4 Řešení modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2.2.5 Analýza řešení modelu . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2.6 Modifikace modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3 Populační modely 21 3.1 Růst populace živých organismů . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.1 Identifikace modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.2 Sestavení modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.3 Implementace modelu a jeho řešení . . . . . . . . . . . . . . . . . . . 23 3.1.4 Analýza řešení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.1.5 Modifikace modelu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.2 Populace pod tlakem nespecializovaného predátora . . . . . . . . . . . . . . 30 3.2.1 Identifikace a sestavení modelu . . . . . . . . . . . . . . . . . . . . . 30 3.2.2 Implementace modelu a jeho řešení . . . . . . . . . . . . . . . . . . . 35 3.2.3 Analýza řešení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.3 Interagující populace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.3.1 Modely dvou interagujících populací . . . . . . . . . . . . . . . . . . 46 3.3.2 Model dravec-kořist Leslieho typu . . . . . . . . . . . . . . . . . . . 59 3.3.3 Model dravec-kořist Gauseho typu . . . . . . . . . . . . . . . . . . . 62 3.3.4 Společenstva n druhů ­ Lotkův-Volterrův systém . . . . . . . . . . . 66 v 4 Modely se zahrnutím neurčitosti 75 4.1 Analýza neurčitosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.2 Analýza citlivosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.3 Neomezený růst populace živých organismů . . . . . . . . . . . . . . . . . . 77 4.3.1 Analýza neurčitosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.3.2 Analýza citlivosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.4 Omezený růst populace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.4.1 Analýza citlivosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 4.5 Populace pod tlakem nespecializovaného predátora . . . . . . . . . . . . . . 87 4.5.1 Analýza citlivosti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 5 Maple 91 5.1 Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.1.1 Standardní zápisník (Standard Worksheet) . . . . . . . . . . . . . . 91 5.1.2 Klasický zápisník (Classic Worksheet) . . . . . . . . . . . . . . . . . 92 5.1.3 Příkazový řadek a kalkulačka Maple . . . . . . . . . . . . . . . . . . 92 5.1.4 Document Mode, Worksheet Mode . . . . . . . . . . . . . . . . . . . 93 5.1.5 Math Mode, Text Mode . . . . . . . . . . . . . . . . . . . . . . . . . 94 5.2 Základní ovládání systému . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.2.1 Vyhodnocení příkazů . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.2.2 Palety . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.2.3 Názvy symbolů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 5.3 Nápověda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.3.1 Maple Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.3.2 Tour of Maple, Quick Reference, Quick Help . . . . . . . . . . . . . 97 5.3.3 What's New, Startup Dialog . . . . . . . . . . . . . . . . . . . . . . 98 5.3.4 Manuals, Resources, and more . . . . . . . . . . . . . . . . . . . . . 98 5.3.5 Pomocníci, instruktoři a řešené úlohy . . . . . . . . . . . . . . . . . 99 5.4 Provádění výpočtů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 5.4.1 Příkazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.4.2 Označení výsledků . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 5.4.3 Přiřazení hodnot do proměnných . . . . . . . . . . . . . . . . . . . . 103 5.4.4 Řešení rovnic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 5.4.5 Balíky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 5.5 Funkce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 5.6 Kreslení a animace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 5.7 Práce s neurčitostmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 5.7.1 Intervalová aritmetika . . . . . . . . . . . . . . . . . . . . . . . . . . 117 5.7.2 Scientific Error Analysis . . . . . . . . . . . . . . . . . . . . . . . . . 119 5.7.3 Fuzzy Sets Toolbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 5.7.4 Statistics pro neurčitost . . . . . . . . . . . . . . . . . . . . . . . . . 122 5.8 Základy programování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 5.8.1 Podmíněný příkaz if . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 5.8.2 Cyklus for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 5.8.3 Cyklus while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 5.8.4 Iterativní příkazy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 vi Kapitola 1 Úvod do matematického modelování a jeho členění Matematické modelování proniklo do různých oborů přírodních, technických, ekonomických i sociálních věd a stalo se důležitým nástrojem při modelování a simulacích systémů, analýzách a předvídání různých procesů, jevů, chování druhů a stavů společenstev apod. V dalším textu se zaměříme na matematické modelování systémů, kde systémy budeme chápat jako určité abstrakce reálného světa (objektivní reality), které si lidé vytvářejí v procesu jeho poznání. Jako systém budeme zjednodušeně uvažovat (následující výčet je neúplný) např.: a) Proces, komplex procesů, (např. pohyb kyvadla, tok elektrického proudu v obvodu, rozmnožování buněk a organismů, apod.), jímž rozumíme zákonité, na sebe navazující a vnitřně propojené změny nějakého objektu. Proces lze často číselně vyjádřit časovým průběhem nějaké hodnoty, resp. skupin hodnot. Můžeme dávat přednost obecnějšímu vyjádření, kde místo čísel vystupují prvky nějaké množiny. Pak systémem nazýváme každý objekt (konkrétní nebo abstraktní), jenž vstupnímu procesu určitého typu přiřazuje výstupní proces téhož nebo jiného typu. Toto přiřazení, které popisuje reakce výstupů na vstupy, se nazývá chováním systému, a proto se tato definice nazývá behavioristická (behaviour - angl. chování). Místo slova ,,přiřazení často používáme i slovo ,,transformace , jenž je mnohdy z praktického hlediska výstižnější, protože mnoho systémů opravdu transformuje vstupní procesy na výstupní, tj. přetváří je. b) Takový objekt (přirozený či umělý), který v každém časovém okamžiku má na vstupu nějaký vstupní prvek, na výstupu nějaký výstupní prvek a kromě toho je vždy v nějakém vnitřním stavu, přičemž jsou dány jednoznačné závislosti * stávajícího výstupního prvku na stávajícím stavu a vstupním prvku, * následujícího stavu na stávajícím stavu a vstupním prvku. Tato definice se nazývá stavová a je ekvivalentní s první definicí, tj. každý objekt vyhovující definici první vyhovuje i definici druhé a naopak. c) Soubor nějakých prvků a vazeb mezi nimi, např. soužití dravce a jeho kořisti; výroba jeřábu s předepsanou nosností, minimalizace spotřeby vozidla na danou vzdálenost 1 apod. S používáním této definice však nastávají určité potíže. Není snadné interpretovat slovo ,,vazba , a ne každý objekt, který lze intuitivně zcela zřejmě považovat za systém, je komponován z několika jasně odlišitelných prvků. d) Soubor informačních, regulačních a řídících činností vztahujících se k a) ­ c), např.: informační systém, řídící systém, komunikační systém, regulační systém. e) Abstraktní myšlenkovou konstrukci, výrokovou konstrukci, konstrukci matematických výrazů apod. zaváděném na a) ­ d). f) Abstraktní myšlenkovou konstrukci atd. vytvářenou bez přímého vztahu k a) ­ d). Použití matematického modelu systému přináší řadu výhod: * Umožňuje zjistit informace o chování systému, i když z skutečného systému je to nemožné nebo obtížné. * Urychluje proces poznání objektivní reality. Procesy, které ve skutečném systému probíhají pozvolna a dlouhodobě, lze pomocí modelu sledovat zrychleně během simulace (výpočtu), která závisí na použité informační a komunikační technologii (ICT). * Usnadňuje a racionalizuje proces poznání. Matematický model systému dává přehledná, stručná zobrazení objektivní reality a umožňuje postup při řešení problému podle potřeby uživatele. Modely vnášejí nové poznání do našeho myšlení. * Umožňuje variantní řešení, tj. simulaci a propočet celé řady variant možných výsledků řešení. * Identifikuje vznik chybného poznání objektivní reality (na rozdíl od experimentu v reálném systému). Matematické modelování získává v posledních letech velký význam v praxi, ale také ve výuce studentů přírodovědných a technických směrů jak v univerzitním prostředí, tak i na vysokých školách technického zaměření. Do matematického modelování, stejně jako i do jiných odvětví vědy, proniklo již od šedesátých let minulého století využití ICT. Nyní si bez jejich využití neumíme matematické modelování představit. Požadavky na tyto aplikace -- symbolické a numerické výpočty, na jejich vysokou přesnost, vizualizaci a interaktivní komunikaci s řešitelem atd. -- vedly k vytvoření komplexních aplikačních programů jako jsou např. komerční programy: Matlab od firmy Mathworks Inc.1, Maple od Maplesoft Inc.2, MathCAD od MathSoft Inc.3, Mathematica od Wolfram Reasearch, Inc.4, MuPAD5 vyvíjený universitou Paderhorne a firmou SciFace Software GmbH6 atd. Podrobnější informace lze nalézt na webu7. 1 http://www.mathworks.com 2 http://www.maplesoft.com 3 http://www.mathsoft.com 4 http://www.wolfram.com 5 http://research.mupad.de/ 6 http://www.sciface.com/ 7 http://www.symbolicnet.org/www-sites.html 2 Z volně přístupných (open source) programů zmíníme např. programy: MAXIMA pro symbolické výpočty8, OCTAVE pro numerické výpočty9 a R pro statistické výpočty10. Tyto aplikační programy lze využít v matematickém modelování během celého výpočetního procesu, tj. identifikace, analýzy, vývoje, implementace, řešení a ověřování, případně modifikace matematického modelu. Volně přístupné zdroje odborné literatury k této problematice lze nalézt na webu11. V současné době se používají některé výše uvedené systémy (např. Maple, Matlab a Mathematica) na vysokých školách pro demonstraci probírané látky na cvičeních, případně jsou využívány studenty při individuální přípravě, analýze a řešení problémů, které jim zadávají jejich učitelé nebo vyplývajících z jejich závěrečných prací. Charakteristickým rysem inovace výuky matematického modelování ve studijních programech vysokých škol v České i Slovenské republice, Evropské unii a v zemích OECD se v posledních deseti letech stává používání nových ICT v rámci budování nového vědního oboru ,,Computational Science a ,,Mathematical Modelling .[4] Cílem stále více vysokých škol je ovšem zařadit do výuky předmět seznamující studenty s prací ve výše uvedených systémech, na které mají zakoupenu licenci, a využít jejich možností při návrhu, analýze, řešení a testování netriviálních matematických modelů. To je rovněž cílem tohoto učebního textu, kde nejprve popíšeme, co je matematický model, metodologie matematického modelování a na praktických příkladech ukážeme využití ICT Maple pro jejich řešení. Matematické modelování s využitím ICT se často rozděluje do tří oblastí: black-box (černá skříňka), white-box (bílá skřínka) a shadow-box (šedá skřínka) řešení modelu, podle toho, jak moc předem jsou k dispozici informace o modelu systému a způsobu jeho řešení. Black-box modelování je způsob, kdy není známa a priori informace o modelu i jeho řešení. White-box modelování je modelování, kde jsou známy všechny potřebné informace o matematickém modelu systému i způsobu jeho řešení. Prakticky všechny známé způsoby matematického modelování s využitím ICT náleží mezi black-box a white-box řešení modelů. Nedávno bylo zavedeno tzv. shadow-box modelování, kdy uživatel využívá jako základní black-box modelování a může si zvolit alternativně white-box modelování při řešení modelu systému. Toto umožňuje právě ICT Maple, která je v tomto směru nejvíce rozvinuta. Obvykle je lepší používat co nejvíce a priori informací, pokud je to možné, a vytvořit mnohem přesnější matematický model systému. Tudíž white-box modely jsou obvykle považovány za vhodnější, protože pokud se použily informace o systému správně, pak model i jeho řešení se budou chovat správně. Často je apriorní informace dána v podobě znalosti typu funkcí týkající se jejich různých proměnných. Například, když chceme vytvořit model, jak lék funguje v lidském organismu (systému), víme, že obvykle množství léku v krvi v čase je exponenciálně klesající funkce. Víme však, že jsou zde ještě další neznámé parametry určující, jak rychle se množství léku v krvi vstřebá, a jaké je původní množství léku v krvi. Tento příklad tedy není typu white-box model. Jeho parametry musí být odhadnuty prostřednictvím nějakých jiných lékařských metod, a teprve poté je možné použít model s exponenciálně klesající funkcí. 8 http://maxima.sourceforge.net/ 9 http://www.gnu.org/software/octave/index.html 10 http://www.r-project.org/ 11 http://www.symbolicnet.org/lit.html 3 1.1 Matematický model Matematický model je abstraktní model12, který využívá matematického jazyka k popisu chování systému. Používá se převážně v přírodních vědách (fyzika, biologie, chemie apod.) a technických disciplínách (strojírenství, elektrotechnika, stavebnictví apod.), ale také ve společenských vědách (ekonomie, sociologie a politické vědy). Matematický model transformuje systém do matematického zápisu, který má následující výhody: * formalizaci zápisu danou historickým vývojem (v současné době je vyvinuta uznávaná mezinárodní standardizace), * přesná pravidla pro manipulaci s matematickými symboly a strukturami, * možnost využití ICT pro zpracování vytvořeného modelu. I přes velký potenciál matematického zápisu jím není možné popsat reálné systémy, objekty či procesy, které jsou velmi komplikované. Proto musíme nejdříve identifikovat nejdůležitější části zkoumaného systému, jenž budeme modelovat, a ty musí vytvářený model popisovat. Ostatní prvky systému můžeme buď podstatně zjednodušit, nebo zcela vyloučit. 1.1.1 Základní prvky matematického modelu Matematický model obvykle popisuje systém s pomocí množiny proměnných a množiny rovnic, které určují vztahy mezi proměnnými. Hodnoty proměnných mohou být např. reálná nebo celá čísla, booleovské hodnoty nebo textové řetězce. Proměnné reprezentují nějaké vlastnosti systému, např. výstupy měřených systémů často ve tvaru signálů, vzorkovaná data, hodnoty počitadla, výskyt dané události či jevu (ano/ne) apod. Skutečný model je množina funkcí, která popisuje vztahy mezi různými proměnnými. V každém matematickém modelu můžeme rozlišit tři základní skupiny objektů, ze kterých se model skládá. Jsou to: * proměnné a konstanty, * matematické struktury, * řešení. Proměnné a konstanty v matematickém modelu V matematickém modelu uvažujeme šest základních skupin proměnných: rozhodovací (řídící) proměnné, vstupní proměnné, stavové proměnné, exogenní proměnné, náhodné proměnné a výstupní (endogenní) proměnné. Pokud bude více proměnných daného typu, tak je budeme uvažovat jako vektory. 12 Abstraktní model (nebo konceptuální model) je teoretická konstrukce, která reprezentuje fyzikální, biologický nebo sociální či ekonomický proces. Sestává z množiny proměnných a množiny logických nebo kvantitativních vztahů mezi proměnnými. 4 1. Rozhodovací (řídící) proměnné. Jsou obvykle známy jako nezávisle proměnné. Představují zpravidla nejdůležitější procesy modelovaného systému, které se v matematickém modelování nazývají aktivity nebo entity nebo rozhodovací proměnné. Příklad: V modelu I = U R představují U a R napětí a odpor v příslušných jednotkách. Těmito dvěma řídícími proměnnými je určen proud I; 2. Exogenní proměnné. Jsou někdy známy jako parametry nebo konstanty. Ovlivňují model systému a jejich hodnoty jsou určovány mimo modelovaný systém. Tyto proměnné nejsou na sobě závislé jako např. stavové proměnné; 3. Vstupní proměnné. Ovlivňují model daného systému a jejich hodnoty jsou determinovány mimo modelovaný systém; 4. Stavové proměnné. Jsou závislé na ostatních proměnných (rozhodovacích, vstupních, náhodných a exogenních proměnných); 5. Náhodné proměnné. Jsou obvykle určeny pravděpodobnostní funkcí (diskrétní proměnná) nebo hustotou pravděpodobnosti (spojitá proměnná) a představují neurčitost v modelu. 6. Výstupní (endogenní) proměnné. Jejich hodnoty jsou určeny (generovány) stavem systému či jeho modelu. Dále můžeme z hlediska ICT proměnné a konstanty v modelu uvažovat jako: * Identifikované (pojmenované) proměnné a konstanty. Identifikovaná proměnná nebo konstanta představuje konkrétní vlastnost reálného objektu, pojmenovanou názvem a fyzikální jednotkou, v níž se měří. Příklady: xk je výměra pšenice ozimé v hektarech, xr produkce pšenice ozimé na parcele ,,U křížku v tunách, cik vzdálenost dodavatele Di od spotřebitele Sk v ki- lometrech. * Neidentifikované (pomocné) proměnné a konstanty. Slouží pro formalizaci matematického zápisu, implementaci algoritmů apod. Obvykle se uvažují v bezrozměrných jednotkách. * Nekontrolovatelné proměnné. Představují procesy v systému, jejichž míry nelze zjistit (jedná se o další typ neurčitosti). Příklady: V modelech kilmatu ,,ad hoc jsou charakteristiky počasí nekontrolovatelné konstanty nebo proměnné, protože nelze využít počtu pravděpodobnosti pro jejich popis. Velikost míry inflace v chaotických a nestandardních podmínkách nelze popsat ani pomocí pravděpodobnosti ani pomocí fuzzy funkce. 1.1.2 Matematické struktury (omezující podmínky) v matematickém modelu Cíle a omezení matematického modelu systému mohou být reprezentovány od jeho tvůrců i uživatelů jako funkce výstupních nebo stavových proměnných. Cíl modelu bude záviset na úhlu pohledu jeho uživatele. V závislosti na kontextu, může být stanovena nějaká cílová 5 funkce (index výkonnosti modelu), jako je určitá míra zájmu uživatele. Ačkoliv neexistuje žádný limit na počet cílových funkcí a omezení, které model může mít, tak pomocí optimalizace modelu mohou být (výpočetně) do ICT modelu více zahrnuty, aby se na ně bral zřetel. V matematických modelech se matematické struktury nazývají omezující podmínky. Dělíme je podle použitého matematického aparátu z některého odvětví matematiky na: * Analytické struktury. Jedná se o objekty z Matematické analýzy, Lineární algebry a dalších odvětví matematiky. Příklad: soustavy rovnic (lineární, nelineární, skalární, vektorové, diferenciální, integrální, maticové atd.), soustavy nerovnic (lineární, nelineární, se smíšenými omezeními atd.), funkce (elementární, složené, holomorfní, stochastické, fuzzy atd.), funkcionály atd. * Geometrické struktury. Model je popsán grafickými prostředky: body, přímkami, rovinami, křivkami. Příklad: Geometrická interpretace a řešení úloh v modelech lineárního programování. Grafická interpretace rovnováhy nabídky a poptávky v ekonometrických modelech atd. * Topologické struktury. Modely jsou vytvářeny pomocí objektů matematické teorie grafů. Topologické modely lze zpravidla ekvivalentně zobrazovat pomocí tzv. incidenčních matic (tabulek, matic souslednosti apod.). Příklad: Modely maximálních toků v sítích, nejspolehlivější cesty v grafu/síti. Dopravní a distribuční systémy zobrazené grafem. Logistické systémy popsané pomocí grafů a schémat. * Arteficiální struktury. Modely jsou popsány prvky programovacího jazyka. Příklad: Model systému zásob popsaný vývojovým diagramem (simulačním jazykem SIMULA 67, objektově orientovaným jazykem Smalltalk apod.). * Kvalitativní struktury. Model je popsán pomocí kvalitativních rovnic, kvalitativních nerovností nebo vágně. Příklad: kvalitativní matice, kvalitativní graf, jazykový operátor ,,velmi v teorii fuzzy množin atd. * Některé speciální a především již standardní struktury matematického modelu mají specifické názvy. Příklady: Cobb-Douglasova funkce. Účelová funkce. Podmínky nezápornosti. Lagreangova funkce. Wolfeho podmínky. 1.1.3 Řešení matematického modelu Řešení matematického modelu dělíme podle hlediska cílů modelování na: * Přípustné (resp. nepřípustné) řešení ­ řešení vyhovuje (resp. nevyhovuje) omezujícím podmínkám. 6 ˇ Maximální řešení, minimální řešení ­ řešení splňuje maximalizační nebo minimalizační cílovou podmínku. * Optimální řešení ­ řešení vyhovuje nejlépe požadovanému cíli podle představ a požadavků řešitele (tj. nemusí být nutně maximální či minimální). * Výchozí řešení ­ řešení zpravidla zadané odhadem nebo sestrojené vhodným jednoduchým algoritmem. Není optimální, používá se jako start v algoritmech typu ,,step by step , které jsou založeny na postupném zlepšování výchozího řešení až do jeho optimálního tvaru. * Výsledné řešení ­ řešení, které může být vybráno jako optimální. Výsledných řešení může být k dispozici konečně nebo i nekonečně mnoho. Z množiny výsledných řešení (alternativ) vybírá řešitel řešení pro praxi nejvhodnější (optimální). * Alternativní řešení ­ řešení, které je podle předem zadaných kriterií rovnocenné s jiným řešením. Příklad: Dvě strategie investic do vybavení podniku předpokládají sice různé technologie, ale garantují dosažení stejné výše zisku. * Aproximativní řešení ­ řešení vyhovuje omezujícím podmínkám přibližně nebo se k přesnému řešení pouze přibližuje (zpravidla se požaduje, aby termín ,,přibližně byl vhodným způsobem determinován, např. byla známa velikost chyby, když řešení použijeme). 1.2 Klasifikace matematických modelů Během identifikace a analýzy modelovaného systému je vhodné určit, do jaké kategorie matematický model spadá, což nám umožní snadněji rozpoznat základní vlastnosti a strukturu hledaného modelu. Podle toho, zda zahrnujeme do modelu náhodné veličiny, lze modely rozdělit do dvou skupin: deterministických a stochastických modelů. Dále lze tyto skupiny rozdělit dle vztahu k průběhu času (dynamické, statické) nebo spojitosti (spojité, diskrétní). Matematické modely obsahují proměnné, jež jsou abstrakcí hledaných prvků systému a operátorů nad těmito proměnnými. Operátory mohou reprezentovat algebraické operace, funkce, funkcionály, diferenciální operátory atd. Pokud jsou operátory v matematickém modelu lineární, hovoříme o lineárních modelech, v opačném případě o nelineárních mo- delech. Můžeme také uvažovat modely se soustředěnými (u homogenních modelů) a distribuovanými (u heterogenních modelů) parametry. Mezi těmito skupinami leží mnoho jiných typů modelů, dále tříděných podle mnoha dalších kriterií, které lze využít. Matematické modely se používají prakticky ve všech vědách a rozvoj jednotlivých věd je na jejich využívání bezprostředně závislý. Stupeň ,,matematizace vědního oboru je uznávaným měřítkem jeho kvality a zárukou rozvoje. V oblastech přírodních a fyzikálních věd, technice, ekonomii, managementu, marketingu, sociálních a společenských vědách se používá velké množství různých typů matematických modelů, které můžeme klasifikovat podle různých hledisek. Nejobecnější klasifikace dělí matematické modely do dvou skupin: 7 ˇ Modely deskriptivní. Slouží k zobrazení prvků a vztahů v systému a k analýze základních vlastností systému. Nezajímá nás určité cílové chování systému, ale pouze systém sám o sobě. Pomocí těchto typů modelů se odvozují další vlastnosti systému, určuje se jeho rovnovážný stav, stabilní stav, vliv změn uvnitř i ve vnějším okolí systému na jeho chování. Příklady: Rovnice E = mc2, soustava diferenciálních rovnic modelující procesy narození a úmrtí, simulační model modelující výskyt škůdců porostu, rovnice nabídky a poptávky v konkurenčním prostředí, ekonometrický meziodvětvový model ,,InputOutput atd. * Modely normativní. Slouží k analýze a řízení systému tak, aby byl splněn nějaký cíl nebo množina cílů. Zajímá nás cílové chování systému. Normativní model bývá často doplněn tzv. cílovou (účelovou) funkcí nebo soustavou takových funkcí. Nutnou součástí normativního modelu je extremální (minimální/maximální) řešení, které dává návod, jak požadovaného cíle (resp. cílů) dosáhnout. Normativní modely, jejichž cílem je nalezení optimálního řešení, se nazývají optimalizační modely. Modely deskriptivní i normativní jsou dále děleny podle typu systému, k jehož modelování slouží, nebo podle typu matematických složek (proměnné, struktury, řešení), jež obsahují: * Modely statické. Model popisuje a analyzuje systém bez zřetele k jeho časovému vývoji. Zobrazení se týká zpravidla určitého časového intervalu (týden, měsíc, rok apod.). * Modely dynamické. Model popisuje a analyzuje systém v průběhu času. Zobrazení může být typu ,,ex post nebo ,,ex ante a respektovat krátký či delší časový horizont. * Modely dynamizované. Zpravidla se jedná o vyjádření časového prvku ve statickém modelu pomocí speciálních modelových technik. Dynamizované modely se používají v případě, kdy odpovídající dynamický model je velmi složitý nebo jej nedovedeme soudobými modelovými technikami spolehlivě konstruovat. * Modely deterministické. Všechny proměnné, konstanty a funkce v modelu jsou deterministické (nenáhodné) veličiny nebo funkce. * Modely stochastické. Alespoň jedna proměnná, konstanta nebo funkce v modelu je náhodná veličina nebo náhodná funkce. * Fuzzy modely. Některé proměnné, konstanty nebo funkce jsou ,,fuzzy veličiny , nebo ,,fuzzy funkce . Podle povahy problému se modely používají individuálně nebo v kombinacích. Pro řešení známých problémů lze použít tzv. standardní modely. Pro řešení nových problémů je třeba konstruovat nové modely. 8 1.3 Modelování neurčitosti, nejistoty a rizika Nejistotou při transformaci systému pomocí matematického modelu rozumíme situaci, kdy nemáme k dispozici všechny potřebné informace nebo kdy některé z informací jsou nespolehlivé. 1.3.1 modelování neurčitosti Pro jednoduchost můžeme neurčitosti ovlivňující model rozdělit na tři spolu související kategorie [19]: a) neurčitost v matematickém popisu modelu je výsledkem nedostatečné znalosti chování modelovaného systému, neúplných exaktních dat, či zjednodušení, které bylo nutné provést pro matematický popis. V literatuře je možné setkat se s pojmy strukturální (konstrukční) chyba, konceptuální chyba, neurčitost v konceptuálním modelu, nebo chyba/neurčitost modelu, které částečně či zcela odpovídají tomuto druhu neurčitosti. b) datová neurčitost neboli neurčitost v datech je způsobena chybami měření, nepřesností analytických metod a omezeným množstvím vzorků při sběru a zacházením s daty.Datovou neurčitost někdy nazýváme odstranitelnou neurčitostí, neboť je možné ji dalším studiem (měřením) minimalizovat. Speciálně pro tento druh neurčitosti používáme v češtině termín nejistota. c) neurčitost v aplikaci modelu vyjadřuje neurčitost (chybu), která vznikne použitím modelu. V tomto případě se jedná zejména o řešení matematických rovnic popisujících model pomocí nástrojů ICT. Analýza neurčitostí vyšetřuje zmíněné neurčitosti ve vstupu a jejich vliv na výstup modelu. Zpravidla se skládá z následujících kroků: * charakterizace vstupních neurčitostí -­ odhad neurčitostí ve vstupu a parametrech algoritmu modelu; * šíření neurčitostí -­ odhad neurčitosti ve výstupu způsobené neurčitostmi na vstupu modelu; * charakterizace neurčitostí modelu -­ charakterizace neurčitostí spojená s jinými strukturami algoritmu modelu a formulacemi modelu; * charakterizace neurčitostí v predikcích algoritmu modelu -­ vychází z neurčitostí ve vyhodnocených datech. Neurčitost má (nejméně) dvě vzájemně komplementární stránky: vágnost a nejistotu. Vágnost lze modelovat např. pomocí teorie fuzzy množin, zatímco nejistotu např. pomocí teorie pravděpodobnosti a popř. dalších teorií, jako je teorie možnosti, různé míry věrohodnosti apod. Můžeme tedy říci, že pravděpodobnost nám odpovídá na otázku, zda ,,něco nastane , zatímco teorie fuzzy množin nám odpovídá na otázku, ,,co vlastně nastalo . Je zřejmé, že při matematickém modelování systému bývá přítomna jak nejistota, tak 9 vágnost. Ze studijních účelů však lze obě tyto stránky oddělit a zabývat se pouze jednou z nich. Podle [13] můžeme říci, že ,,Předmětem teorie pravděpodobnosti je studium a modelování nejistoty. Ta nastává tehdy, jestliže se setkáváme s nějakým jevem, který může, avšak nemusí nastat. Nemáme tedy jistotu, že jev opravdu nastane. Základním pojmem v teorii pravděpodobnosti je rozdělení pravděpodobnosti. To charakterizuje způsob nastání jevů vybíraných z nějaké množiny různých jevů, o nichž víme určitě jen to, že jeden z nich nastane. Pravděpodobnost nám pak dává informaci o tom, zda nastání některého z uvažovaných jevů můžeme očekávat s větší jistotou, než nastání jiného jevu. Naproti tomu uvažujme např. objekty s určitou vlastností a na otázku, jakou mají ,,vlastnost odpovíme, že by ji mohli mít, než, že ji mají či ne. Jde totiž o vymezení vlastnosti a nikoliv toho, zda ji jev má či ne. Základním pojmem je zde fuzzy množina objektů a stupeň příslušnosti objektu do ní. Stupně příslušnosti, stejně jako pravděpodobnosti, mohou být čísla z intervalu [0, 1]. To je však jen vnějšková shoda s teorií pravděpodob- nosti. Fuzzy logika umožňuje zahrnout nepřesnost a poměrně jednoduchým způsobem pracovat s významy slov přirozeného jazyka. Používá vágně charakterizované expertní znalosti. Tedy pravý opak toho, co se vždy požadovalo ­ větší přesnost. Narážíme na reálný rozpor, jehož řešení neexistuje. Jde o vztah mezi relevancí a přesností informace. Princip, který L. A. Zadeh nazval principem ,,inkompatibility , lze charakterizovat takto: Chceme-li popsat realitu, pak musíme rozhodnout mezi relevancí informace, která bude méně přesná, nebo přesností informace, která však bude méně relevantní. Při zvyšování přesnosti se dostaneme k bodu, kdy přesnost a relevance se stávají vzájemně se vylučujícími charakteristikami. Příklad: Např. instrukce k zaparkování auta: ,,pootoč kola o 19 25.32" a popojeď o 368.1256 mm dozadu ­ jednak by se tato informace zdlouhavě a složitě chystala a také by bylo obtížné ji přesně splnit. Stačí říct pootoč kola mírně doleva a popojeď o malý kousek dozadu. ,,K vyjádření relevantní informace je nezbytné použít přirozený jazyk. Je to dosud jediný dokonalý prostředek, který nám umožňuje efektivně pracovat s vágními pojmy. [13] Ukazuje se, že přesnost matematického modelu je pouze iluze, neboť je principiálně nedosažitelná. Snaha o absolutní přesnost nás vždy dovede ke sporu. Není však třeba litovat, neboť vágnost, kterou přirozený jazyk umí dokonale využít, je jeho hlavní silou, nikoliv nedostatkem. [13] Častá námitka, že to, co je řešeno pomocí fuzzy logiky, lze řešit i bez ní, neobstojí. Rozdíl mezi klasickým řešením a řešením pomocí fuzzy logiky je v čase a s tím souvisejících nákladech. Trvalo by to mnohem déle, abychom dosáhly stejného efektu (správnosti). Nalezení matematického popisu může být v praxi velmi obtížné. Často je popis velmi složitý, a následné použití modelu není zrovna snadné. Proto se buď používají přibližné metody nebo se přijímají různá zjednodušení a výsledek pak nemusí být uspokojivý. Při řešení pomocí fuzzy logiky je navíc větší jistota, že dané řešení (model systému) bude robustnější vzhledem k náhodným poruchám a nepředvídaným situacím, které pochopitelně lze očekávat. K vyjádření relevantní informace je nezbytné použít přirozený jazyk. S počítačem není možné komunikovat v přirozeném jazyce, a proto jsou nezbytná jistá zjednodušení. Obvyklý způsob je použití pravidel typu JESTLIŽE-PAK. Tato pravidla jsou základem všech úvah a základem činnosti všech algoritmů. 10 Příklad: JESTLIŽE sklon svahu je velký a srážky jsou intenzivní, PAK se svah velmi rychle sesune. Modelování při riziku předpokládá, že některé informace jsou náhodné veličiny, nebo že některé procesy jsou popsány náhodnými funkcemi. V případě modelů s rizikem můžeme velikost rizika při přijetí řešení popsat pomocí pravděpodobnostních charakteristik. 11 12 Kapitola 2 Metodologie matematického modelování Na obrázku 2.1 je znázorněn proces zkoumání systému, který začíná monitoringem a sběrem dat o systému, pokračuje jejich vstupem do matematického modelu a na základě analýzy výsledků řešení modelu (porozumění, predikce a kontrola jeho chování), je provedena případná úprava a přizpůsobení sběru dat. Pokud to nevede k uspokojivému řešení, provedou se na zkoumaném systému nové experimenty. Obrázek 2.1: Proces zkoumání systému s využitím matematického modelování 2.1 Obecné zásady matematického modelování Matematické modelování je odborná a kvalifikovaná činnost vyžadující týmovou spolupráci odborníků z různých oblastí: odborníka z oblasti oboru řešené problematiky, specialistu v oblasti matematiky, specialistu z oblasti informatiky apod. Pro úspěšné matematické modelování musí být splněny následující předpoklady: 13 ˇ Znalost metod a prostředků matematické a funkcionální analýzy, algebry a diskrétní matematiky -- důležité pro volbu správné metody řešení a modelu. * Znalost techniky modelování a zdrojů informací o modelu. Úsilí vynaložené na konstrukci a využití určitého modelu z literatury musí být úměrné jeho přínosu. * Týmová spolupráce. Musí existovat dostatečný prostor pro vlastní vývoj matematického modelu (iniciativa) a musí být zainteresovanost (studijní, výzkumná) na využití modelové techniky (motivace). * Výpočetní základna. Všechny tři složky ICT (tj. hardware, software a komunikace) musí být řešitelskému týmu k dispozici a musí být v rovnováze. * Informační a datová základna. Každý model je třeba ověřit pomocí vstupních parametrů a dat, které vycházejí z konkrétních hodnověrných údajů a zdůvodněných odhadů. Údaje musí být ve vhodné formě pro ověřování modelu. Je třeba vytvářet specifické informační systémy (banky dat), jež uchovávají data. * Experimentální základna. U složitých matematickým modelů by měla být k dispozici i experimentální základna, kde se řešení modelu ověří v praxi. Metodologie matematického modelování se vyvíjí jako samostatná odborná specializace, která se v současné době zařazuje do Teorie modelování jako součást tzv. Systémové analýzy. Obecné zásady, jež je třeba při matematickém modelování systémů respektovat, lze velmi zjednodušeně popsat následujícími kroky: 1. Identifikace systému z hlediska matematického modelování. * Rozhodnutí, zda se jedná o standardní systém (problém), již řešený a volba standardního modelu. * Rozhodnutí, zda se jedná o nový, dosud neznámý systém, a zda použijeme upravený standardní model nebo vytvoříme model nový. K tomu je třeba zpravidla vytvořit tvůrčí odborný tým. * Rozhodnutí, zda model bude statický, dynamický, dynamizovaný, deterministický, stochastický. Zda bude deskriptivní, nebo normativní. Zda systém bude modelován jedním modelem či více modely a jak budou vzájemně uspořádány (propojeny). 2. Konstrukce modelu systému. * Prvky systému: elementární část systému při dané rozlišovací úrovni dále ne- dělitelná * Vazby: vzájemné závislosti mezi prvky (kauzální vztahy: příčina-následek, způsoby spojení mezi prvky, souvislosti mezi jevy, informační vazby, matematicky formulované vztahy atd.) * Struktura systému * Chování systému 14 Obrázek 2.2: Identifikace systému * Okolí systému: množina prvků, které nejsou prvky systému, ale mají k němu významné vazby * Organizace dat v systému: jejich struktura, způsobu uložení, vstup a výstup dat atd. * Validita modelu systému: Ověření matematických předpokladů, stability, konzistence a konvergence řešení atd. 3. Výpočet řešení modelu. * Volba algoritmu řešení. * Výběr variant řešení. 4. Výběr užší skupiny dostatečně dobrých řešení. * Výběr vhodných řešení se provádí v rámci algoritmu řešení. * Výběr vhodných řešení provádí specialista z oboru řešené problematiky. * Výběr vhodných řešení provádí skupina expertů. 5. Experimentování s vybraným řešením. * ,,What-if analýza1 , ,,Goal seeking problém2. * Scénáře. 6. Výběr optimálního řešení. 7. Implementace. * Monitoring implementace. * Sledování zpětné vazby. * Úpravy modelu a nová implementace. 1 ,,What-if analýza, česky řečeno ,,Co se stane, když analýza, se používá většinou při numerické simulaci, která slouží k tomu, abychom odhalili, jak je model citlivý na odhad vstupních parametrů, jež by měly ležet v nějakém vhodném intervalu. 2 ,,Goal seeking problém souvisí s tím, že v praxi se vytváří matematický model metodou postupných kroků lépe aproximujících řešený system. Toho se dosahuje lokálním hledáním dostatečně přeného řešení. Tento problém je v anglické literatuře nazýván jako ,,satisfying problem , ,,feasibility problem , nebo také ,,goal-seeking problém. 15 2.2 Matematické modelování s využitím ICT Postup při matematickém modelování reálného problému s ICT je uveden na obrázku 2.3 a sestává z několika kroků. Jde o permanentní interaktivní proces s četnými zpětnými vazbami, který se několikrát opakuje. [5] Obrázek 2.3: Matematické modelování s využitím ICT Tento postup vychází z postupů v projektovém řízení. Nejprve je nutno vyjasnit si cíle, které chceme dosáhnout. Ty určí směr řešení ve dvou bodech: * Na jaké úrovni podrobnosti chceme zkoumat objekt. Např.: Při modelování populačního růstu k napomáhání pro zemědělské poradce. Empirický model obsahující podmínky pro nejdůležitější faktory růstu může být naprosto dostatečný. Model může být považován jako souhrn veškerého současného vědění. Tento model je jednoznačným výzkumným nástrojem pro velmi limitované použití jako například pro návrh experimentů ke studiu procesu výživy přežvýkavců. * Za druhé musíme vytvořit hranici mezi modelovaným systémem a jeho přirozeným 16 prostředím. Toto rozdělení je správné, pokud prostředí ovlivňuje chování systému, ale modelovaný systém neovlivňuje toto prostředí. Např.: Při modelování růstu malé kolonie jehličnanů k prognóze výnosu produkce dřeva je vhodné zahrnout počasí jako část prostředí. Vliv počasí na růst může být začleněný využitím statistických klimatických dat z podobných lokalit a několika uplynulých let. Avšak žádný růstový model světových lesů nemůže obsahovat ovlivnění počasí skrze vývoj tohoto společenství, přestože je znám podstatný vliv lesního porostu na obsah CO2 v atmosféře. 2.2.1 Identifikace modelu Identifikace (stanovení) jednotlivých složek matematického modelu s využitím odborné literatury (knihy, časopisy, ...), spoluprací s odbornou a vědeckou komunitou a dále s využitím ICT k vyhledání a sdílení znalostí o řešeném problému je prvním krokem, který musíme udělat při vytváření matematického modelu. Správná matematická formulace zkoumaného problému je velmi důležitá pro další postup řešení. Je třeba vyjít z analýzy systému, z jeho celkového chování a stanovených cílů řešení. Realita je složitá, je třeba ji vymezit a pro účely modelu zjednodušit. Proto definujeme v rámci objektivní reality systém, tj. prvky, vazby, vstupy a výstupy, procesy a funkce. Dále provádíme zjednodušení (simplifikaci) problému, kdy nepodstatné oddělujeme od podstatného. Tvorba předpokladů Když jsme rozhodli o modelovaném systému, musíme vytvořit základní strukturu modelu, která musí reflektovat naše předpoklady a domněnky o tom, jak systém funguje. Tyto domněnky mohou být uvedeny do formy základních předpokladů. Budoucí analýzy systému vždy zachází s těmito předpoklady jako s pravdivými, ale výsledky těchto analýz budou validní, pouze pokud tyto předpoklady jsou platné. Newton předpokládal, že hmotnost je obecně konstantní, kdežto Einstein uvažoval hmotnost jako proměnlivou. To je jeden z elementárních rozdílů mezi klasickou mechanikou a teorií relativity. Aplikací výsledků klasické mechaniky na objekt pohybující se rychlostí blízkou rychlosti světla vede k nesrovnalostem mezi teorií a pozorováním. Pokud jsou předpoklady dostatečně precizní, mohou okamžitě vést přímo k matematickým rovnicím popisujícím modelovaný systém. 2.2.2 Sestavení modelu Sestavení modelu (vývoj matematických rovnic a formulí) včetně matematické analýzy (korektnost, konzistence, stabilita a konvergence řešení) je dalším důležitým krokem v matematickém modelování. Pro konstrukci modelu je rozhodující účel, který sledujeme. Ten rozhoduje o tom, co budeme ve skutečnosti pokládat za významné (co zahrneme do modelu) a co jako podružné ponecháme mimo model a mimo naše úvahy. Důležitá je zde analýza citlivosti jednotlivých parametrů modelu a minimalizace jeho neurčitosti. Tvorba modelů patří k tvůrčí činnosti a vyjadřuje kromě dobré znalosti modelové techniky také dobrou znalost věcné problematiky. Každý model musí vycházet z konkrétní hypotézy odvozené z objektivní reality (skutečnosti). 17 Výběr matematických rovnic Poté, co bylo rozhodnuto o struktuře modelu, musí být vybrány matematické rovnice k popsání modelovaného systému. Je velmi rozumné vybrat tyto rovnice pečlivě, protože mohou nepředvídatelně ovlivnit chování matematického modelu. Matematické rovnice z literatury Může se stát, že někdo další publikoval matematické rovnice týkající se problému, o nějž se zajímáme. To poskytuje dobrý výchozí bod, ale je nezbytné postupovat s těmito informacemi obezřetně. Problémy, s nimiž se můžeme setkat, jsou následující: * Rovnice jsou odvozené z dat v oblasti vysvětlujících proměnných, která neobsahuje oblast nutnou pro aplikaci modelu. * Experimentální podmínky (prostředí) se podstatně liší od podmínek vyskytujících se v našem modelovaném problému. * Rovnice popisují chování většiny dat, aniž by uvažovaly známé odchylky na koncích oblasti dat, nebo jejich variabilitu (proměnlivost). Některé oblasti vědy jsou dostatečně dobře prostudované, a tak odpovídající formulace analýz se staly standardem. Proto je relativně bezpečné uvažovat podobné analýzy (a proto i struktury rovnic) za řešení podobných problémů. Často nejsou rovnice v literatuře vyjádřeny v přesné formulaci pro hledaný model. Pojmenované a pomocné proměnné mohou být přesunuty během regrese. Rovnice také může popisovat změnu váhy zvířat vzhledem k času, přestože model potřebuje znát změnu počtu jedinců v čase. V jiném případě můžeme přijmout parametr pouze odhadující přibližnou hodnotu, protože není nejdůležitějším pro naše potřeby. 2.2.3 Implementace modelu Implementace modelu s využitím ICT (naprogramování v příslušném programovacím jazyce, jeho odladění a verifikace, analýza jeho výpočetní složitosti, využití příslušného hardware atd.). Zde se vyplatí využít moderních ladících technik, případně i použít již vyvinuté a dostupné (open source) knihovny, služby i moduly z Internetu. 2.2.4 Řešení modelu Řešení implementovaného modelu s využitím ICT nástrojů (analytické, numerické atd.). Naplnění modelu konkrétními parametry a daty. Je třeba dbát na jejich hodnověrnost. Existují dva způsoby odvození řešení z modelu: a) Analytické (explicitní) řešení spočívá v nalezení přesného řešení pomocí analytických matematických metod (řešení soustav rovnic, řešení úlohy na vázaný extrém apod.). b) Numerické (přibližné) řešení se používá při řešení modelů, u kterých neumíme problém řešit analyticky, nebo v případech, kdy je analytické řešení obtížné a složité (metody Monte Carlo, simulace na počítači apod.). Při numerickém řešení musíme uvažovat jeho numerickou stabilitu, konvergenci a chybu, která nám vznikne. 18 2.2.5 Analýza řešení modelu Verifikace řešení (kontrola, zda výsledky souhlasí s chováním objektu), jeho vizualizace atd. a publikace výsledků. Model je jen přibližným obrazem objektivní reality. Je dobrý, jestliže umožní přesně sledovat důsledky změn ve vstupech do systému na výslednou efektivnost systému. Cílem testování modelu je prověření jeho správné struktury, vypovídací schopnosti, formálních kvantitativních vlastností včetně odstranění formálních chyb. Testování modelu provádíme tak, že modely naplníme empirickými číselnými údaji, dosažené výsledky analyzujeme a porovnáváme s realitou. Ověřování lze promítat i do minulosti (,,ex post ) i do budoucnosti (,,ex ante ). Interpretační analýza představuje převod výsledků do reálného systému. Je to aktivní proces, při kterém je třeba provádět neustále logickou kontrolu smyslu řešení, vyhnout se nebezpečí mechanického používání modelové techniky. Významným prvkem interpretace je promítnutí výchozích hypotéz a předpokladů do výsledku řešení. Shrnutí získaných poznatků včetně všech aspektů, které nebyly do matematického modelu zahrnuty. 2.2.6 Modifikace modelu Modifikace modelu a jeho vylepšení. V případě, že dosažené řešení není v dostatečném souladu s objektivní realitou, je nutno začít znovu postupovat od kroku 1 a opakovat celý předešlý postup matematického modelování do té doby, dokud nedosáhneme uspokojivého řešení zkoumaného problému. Metody prezentace modelu jeho potenciálním uživatelům závisí na znalostech uživatele modelu a matematického modelování obecně. Pokud chce uživatel vědět raději méně o detailech modelu, je vhodné ukázat mu všechny relevantní informace o výstupech modelu. To umožní uživateli (který není programátorem) vytvořit si objektivnější pohled na řešení modelu a jeho interpretaci. Je dobré zkontrolovat, zda predikce řešení zahrnují skryté extrapolace. Tyto extrapolace mohou hrát úlohu buď vzhledem k použitým datům při vytváření modelu, nebo vzhledem k datům použitým při testování modelu. 19 20 Kapitola 3 Populační modely Teorii matematického modelování popsanou v úvodních kapitolách nyní aplikujeme na konkrétním případě tzv. populačních modelů. Budeme vytvářet modely populací živých organismů, které žijí v daném čase a prostředí. Naším cílem bude vytvořit model odpovídající na otázku, kolik jedinců bude mít populace v daném čase t > 0, jestliže známe tento počet na počátku (v čase t = 0). Modely růstu populace patří k nejrozšířenějším a nejznámějším, tudíž bychom mohli nyní převzít nějaký již vytvořený model z odborné literatury (např. [8]) nebo ze zdrojů na Internetu (např. [11, 15]). Předpokládejme však, že žádný takový model ještě vytvořen nebyl a popíšeme podrobně jednotlivé kroky jeho tvorby. 3.1 Růst populace živých organismů 3.1.1 Identifikace modelu Nejprve budeme modelovat růst jedné populace. Cíl modelu jsme již stanovili. Nyní musíme specifikovat jednotlivé prvky modelu a definovat předpoklady, za nichž bude model platit. Modelujeme růst jedné populace P v čase t, která sestává z počtu N jedinců a na počátku (v čase t = 0) měla N0 jedinců. Předpokládejme, že změna velikosti N populace P v čase je způsobena pouze plozením nových jedinců a umíráním jiných. Přitom počet nově narozených, respektive zemřelých, jedinců bude přímo úměrný velikosti populace. Pro jednoduchost budeme uvažovat, že na populaci P nepůsobí žádné další vlivy. Hledejme řešení modelu, tj. velikost N populace P v daném čase t. Čas t přitom budeme uvažovat jednak jako diskrétní veličinu nabývající celočíselných hodnot (mohou představovat například roky), nebo jako spojitou veličinu. Tím nám vzniknou dva modely, které srovnáme. 3.1.2 Sestavení modelu Na základě vyslovených předpokladů jsme schopni sestavit rovnici modelu. Označme: N(t) ... funkci představující počet jednotlivců populace (velikost populace) v čase t a ... koeficient porodnosti populace (podíl nově narozených jedinců ke všem jedincům za jednotku času) 21 b ... koeficient úmrtnosti populace (podíl zemřelých jedinců ke všem jedincům za jednotku času) h ... kladné reálné číslo představující časový interval Vzhledem k smysluplnosti modelu předpokládáme, že všechny výše uvedené proměnné mohou nabývat pouze reálných nezáporných hodnot, navíc b 1 (nemůže zemřít více jedinců, než kolik jich je v populaci). Počet jedinců N(t) vypočítaný pro daný čas t nemusí být celé číslo, při interpretaci výsledků jej proto budeme zaokrouhlovat. Navíc předpokládáme, že modelujeme růst populace od času t = 0, v němž známe hodnotu velikosti populace N(0) = N0. Počet nově narozených jedinců za časový interval [t, t + h] je přímo úměrný počtu jedinců N(t) populace v čase t a délce h tohoto intervalu, tj: a N(t) h, kde koeficientem přímé úměrnosti a je koeficient porodnosti. Analogické tvrzení platí pro počet zemřelých jedinců za daný časový interval, tj: b N(t) h, kde koeficientem přímé úměrnosti b je koeficient úmrtnosti. Nyní již můžeme formulovat rovnice modelu. Diskrétní případ Čas t v tomto případě nabývá pouze celočíselných hodnot, takže h bude rovněž celé kladné číslo. Pro jednoduchost zvolme h = 1. Rovnice modelu má pak tvar1: N(t + 1) = N(t) + a N(t) 1 - b N(t) 1 = (1 + a - b) N(t). (3.1) s počáteční podmínkou N(0) = N0. (3.2) Spojitý případ Nechť h je nyní kladné reálné číslo. Potom má rovnice modelu tvar: N(t + h) = N(t) + a N(t) h - b N(t) h. (3.3) 1 Tomuto typu rovnic říkáme rovnice rekurentní (případně diferenční, [10]). 22 Jelikož uvažujeme spojitý čas, tak můžeme předpokládat, že časový interval [t, t + h] je nekonečně malý. Proto upravíme rovnici (3.3) na tvar: N(t + h) - N(t) h = a N(t) - b N(t) = (a - b) N(t). A odtud limitním přechodem (h 0) dostaneme: lim h0 N(t + h) - N(t) h = (a - b) N(t). (3.4) Výraz na levé straně rovnice (3.4) je derivace funkce N(t) podle proměnné t, takže výsledná rovnice modelu má tvar2,3: d dt N(t) = (a - b) N(t) (3.5) s počáteční podmínkou N(0) = N0. (3.6) 3.1.3 Implementace modelu a jeho řešení Řešení výše uvedeného matematického modelu (rovnic modelu) můžeme vypočítat sami na základě svých znalostí, většinou však využíváme vhodných informačních technologií. My budeme používat systém počítačové algebry Maple4 (více o práci v systému v kapitole 5 Maple). Uveďme si tedy, jak implementujeme vytvořený model a jak získáme řešení. Diskrétní případ V systému Maple zapíšeme rovnici (3.1) s počáteční podmínkou (3.2). Klikneme na ni pravým tlačítkem myši a zvolíme z nabídky příkaz na řešení rekurentních rovnic: Solve Recurrence > N(t), viz obrázek 3.1. Získáme tak řešení na obrázku 3.2. 2 Tomuto typu rovnic říkáme rovnice diferenciální [9]. 3 Derivaci funkce podle času budeme dále značit apostrofem, tj. d dt N(t) = N (t) 4 Konkrétně se jedná o verzi Maple 13. U starších verzí systému je nutné některé kroky řešení provést jinak (zpravidla použít příkazy jazyka Maple namísto tlačítka myši) k získání stejného výsledku. 23 Obrázek 3.1: Řešení rovnice (3.1) v systému Maple Obrázek 3.2: Řešení rovnice (3.1) s počáteční podmínkou (3.2) Spojitý případ Zcela analogicky zapíšeme v systému Maple rovnici (3.5) s počáteční podmínkou (3.6). Poté na ni klikneme pravým tlačítkem myši a z nabídky vybereme příkaz na řešení diferenciálních rovnic: Solve DE > N(t), viz obrázek 3.3. Získáme řešení na obrázku 3.4. 3.1.4 Analýza řešení Nyní můžeme přistoupit k analýze výsledků řešení modelu. Využijeme k tomu grafické možnosti systému Maple. Diskrétní případ Abychom mohli vykreslit řešení v diskrétním případě, je nutné přiřadit parametrům modelu N0, a, b konkrétní numerické hodnoty. Uvažujme proto populaci zajíce polního. Z literatury zjistíme, že samice zajíce polního vrhá 3­4 krát do roka 1­7 mláďat a že se zajíc polní dožívá 10­12 let. [12] Na základě těchto údajů odhadneme hodnoty koeficientů porodnosti a úmrtnosti. Předpokládáme přitom, že samic je v populaci přibližně polovina a plození nových jedinců je průměrné. Samice zajíce tedy 3.5krát v roce vrhne 4 mláďata. To je celkem 14 nově narozených jedinců za rok. Jelikož je v populaci samic polovina, poměr nově narozených vzhledem k celkovému počtu jedinců populace bude ,,pouze 7. Jak zjistíme dále, tato hodnota je 24 Obrázek 3.3: Řešení rovnice (3.5) v systému Maple Obrázek 3.4: Řešení rovnice (3.5) s počáteční podmínkou (4.4) velmi vysoká. Proto pro větší přehlednost přejdeme k délce kroku rovnou jednomu měsíci. Koeficient porodnosti tak bude dvanáctina z původně vypočítané hodnoty, tj. a = 7 12. Podobně odvodíme koeficient úmrtnosti. Zajíc polní se dožívá průměrně 11 let, za rok tedy zemře 1 11 jeho populace. Opět přejdeme k měsíčnímu kroku a získáme b = 1 1112. Nechť počáteční velikost populace N0 je 100 jedinců. Pro časový krok rovný jednomu měsíci celkem máme: N0 = 100, a = 7 12 , b = 1 11 12 . Řešení vykreslíme následujícím postupem. Vypočítáme hodnoty řešení pro časové body, které nás zajímají (např. t = 1, 2, ..., 10), a příkazem plot pro vykreslování je zobrazíme. Příkazu plot dále nastavíme několik nepovinných parametrů (symbol, symbolsize, labels) pro lepší vzhled a popis souřadných os. Ukázku zdrojového kódu s výsledky poskytuje obrázek 3.5. Spojitý případ Ve spojitém případě lze s výhodou využít pomocníka pro vykreslování Plot Builder a zkoumat závislost řešení na hodnotách parametrů modelu. V systému Maple zapíšeme 25 Obrázek 3.5: Zobrazení diskrétního řešení. získané řešení na obrázku 3.4, klikneme na něj pravým tlačítkem myši a z nabídky vybereme zmíněného pomocníka přes Plots > Plot Builder. Na obrazovce se nám objeví okénko, v němž nastavíme, co nás zajímá. Zcela nahoře vybereme z rolovacího seznamu možnost Interactive Plot with 3 parameters. Následně zvolíme v níže umístěném rámečku 2-D plot (tato možnost by měla být zvolena standardně, tudíž není nutné nic měnit). Nakonec nastavíme rozpětí hodnot parametrům modelu tak, jak chceme. Nejprve přiřadíme ose x proměnnou t a ostatní pole vyplníme zbylými parametry s jejich požadovanými rozsahy. Ná základě dříve uvedených údajů zvolme: t [0, 10], N0 [50, 500], a [0, 1.17], b [0.007, 0.0083], přičemž připustíme, že koeficient porodnosti může být i nulový, abychom mohli pozorovat vývoj řešení i v případě, kdy je koeficient porodnosti nižší než koeficient úmrtnosti. Horní mez koeficientu porodnosti odpovídá situaci, kdy samice zajíce vrhne 4krát do roka 7 mláďat. Analogickou úvahou jako dříve dospějeme k ,,měsíční hodnotě 14 12 . = 1.17. Meze koeficientu úmrtnosti odpovídají situacím, kdy se zajíc polní dožije 10 a 12 let. Podobu vyplněného okénka podle předchozího postupu ilustruje obrázek 3.6. Následným kliknutím na tlačítko Plot přejdeme na okénko se zobrazením řešení pro nastavení parametrů a, b, N0. Toto nastavení je možné měnit posuvníky po pravé straně okénka. Při změně libovolného parametru se automaticky přizpůsobí vykreslení řešení nové 26 Obrázek 3.6: Nastavení Plot Builderu pro vykreslení spojitého řešení. hodnotě parametru. Okénko s vykreslením řešení poskytuje obrázek 3.7. Po stisknutí tlačítka Done umístíme graf z vykreslovacího okénka do zápisníku systému Maple a současně tím vykreslovací okénko zavřeme. Z předešlého zkoumání závislosti řešení na parametrech modelu můžeme dospět k následujícím závěrům. Pokud bude koeficient porodnosti vyšší než koeficient úmrtnosti, velikost populace bude exponenciálně růst. Pokud budou hodnoty koeficientů totožné, populace bude mít stále stejnou velikost. A jestliže bude koeficient úmrtnosti vyšší než koeficient porodnosti, populace bude vymírat. Počáteční velikost populace nemá na zmíněné chování řešení žádný vliv (pokud je vyšší než nula). V diskrétním případě je situace totožná. 3.1.5 Modifikace modelu Nyní přichází chvíle porovnání výsledků modelu s pozorováním a kritické zhodnocení modelu. Je zřejmé, že problém růstu populace je složitější, než jak jsme si jej namodelovali. Zauvažujme proto nad vylepšením modelu, které jej více přiblíží realitě. Velikost populace se nemůže exponenciálně zvyšovat do nekonečna. Prostor, v němž populace žije, je omezený, podobně jako množství živin. Doplňme proto předpoklad modelu, že úmrtnost se bude zvyšovat se zvětšující se populací. Nejjednodušší způsob závislosti je lineární závislost. Koeficient úmrtnosti tedy nebudeme již chápat jako konstantní číslo, ale jako rostoucí lineární funkci. 27 Obrázek 3.7: Vykreslení spojitého řešení. Koeficient úmrtnosti: b + c N(t), kde b, c jsou reálná nezáporná čísla. Podobně jako dříve získáme rovnice modelu. Diskrétní případ: N(t + 1) = (1 + a - b) N(t) - c N(t)2, N(0) = N0 Spojitý případ: N (t) = (a - b) N(t) - c N(t)2, N(0) = N0 V diskrétním případě se nám nepodaří získat analytický předpis řešení rovnice modelu, z rekurentního předpisu však můžeme určit velikost populace v libovolném čase t. Zaměřme se nyní na spojitý případ. Řešení rovnice modelu v systému Maple obdržíme zapsáním rovnice, kliknutím pravého tlačítka myši a zvolením příkazu pro řešení diferenciálních rovnic Solve DE. Výsledek tohoto postupu je znázorněn na obrázku 3.8. Obrázek 3.8: Řešení modifikované rovnice modelu ­ spojitý případ Analýzu řešení provedeme znovu za pomoci Plot Builderu. V systému Maple zapíšeme před chvílí získané řešení (můžeme zkopírovat) a po kliknutí pravým tlačítkem myši 28 Obrázek 3.9: Vykreslení řešení modifikované rovnice modelu ­ spojitý případ vybereme z nabídky Plots > Plot Builder. Naprosto totožným způsobem jako dříve nastavíme rozsahy parametrů a zkoumáme závislost řešení na jejich hodnotách. Rozsahy všech dříve použitých parametrů necháme stejné, hodnota parametru c závisí na prostředí, v němž poulace žije. Nechť v našem případě nabývá tento parametr stejného rozsahu jako parametr b. Obrázek 3.9 ilustruje vykreslovací okénko spolu s nastavením parametrů pomocí posuvníků. Nastavováním různých hodnot parametrům pomocí posuvníků v Plot Builderu zjistíme, že velikost populace se po čase ustálí na nějaké hodnotě. Tuto hodnotu můžeme určit z rovnice modelu položením levé strany rovné nule, tj. derivace (změna) velikosti populace v čase je nulová. Ustálená hodnota velikosti populace je rovna a-b c (tj. lim t N(t) = a-b c ). Tuto hodnotu nazýváme úživnost prostředí. Chování řešení nyní závisí na počáteční velikosti populace. Velikost populace v čase klesá, pokud N(0) > a-b c , roste, pokud N(0) < a-b c , případně zůstává konstantní. Závislost řešení na počáteční velikosti populace dokumentuje obrázek 3.10 29 Obrázek 3.10: Vykreslení závislosti řešení na počáteční velikosti populace Diskrétní případ bývá složitější, podrobněji se mu budeme věnovat pouze nyní pro počáteční velikost populace N0, která je nižší než úživnost prostředí. V závislosti na velikosti rozdílu a - b mohou nastat čtyři situace (viz [15]): velikost populace monotónně roste k hodnotě úživnosti prostředí (obrázek 3.11), přibližuje se k ní s tlumennými oscilacemi (obrázek 3.12), kolísá kolem této hodnoty pravidelně (obrázek 3.13), nebo kolem této hodnoty kolísá nepravidelně, chaoticky (obrázek 3.14). 3.2 Populace pod tlakem nespecializovaného predátora 3.2.1 Identifikace a sestavení modelu V předešlém příkladu jsme modelovali růst populace, která není ovlivněna svým okolím. Nyní přejdeme k situaci, kdy je v prostředí, v němž se uvažovaná populace vyvíjí, také ne- 30 Obrázek 3.11: Vykreslení řešení diskrétního případu modifikovaného modelu růstu populace pro 0 < a - b < 1. Obrázek 3.12: Vykreslení řešení diskrétního případu modifikovaného modelu růstu populace pro 1 < a - b < 2. 31 Obrázek 3.13: Vykreslení řešení diskrétního případu modifikovaného modelu růstu populace pro 2 < a - b < 2.8. Obrázek 3.14: Vykreslení řešení diskrétního případu modifikovaného modelu růstu populace pro a - b > 2.8. 32 specializovaný predátor. Nespecializovaný predátor je takový, který není závislý na kořisti z uvažované populace, má i alternativní zdroje obživy. Velikost jeho populace tedy můžeme považovat za konstantní a do modelu ji nemusíme zahrnovat. První předpoklad při tvorbě modelu bude přirozený: predátoři uloví takové množství kořisti, které je úměrné době lovu, tj. množství ulovené kořisti za časový interval délky h je rovno p h. Parametr p se nazývá intenzita predace a vyjadřuje predační tlak vyvíjený na uvažovnou populaci, přesněji řečeno: množství kořisti, které predátoři uloví za jednotku času. Intenzita predace závisí na velikosti N populace kořisti, tj. p = p(N). Abychom tuto závislost vyjádřili, přijmeme další dva přirozené předpoklady: * pokud není uvažovaná populace přítomná, predátoři nic neuloví a živí se alternativní potravou * pokud je uvažovaná populace veliká (větší než predátoři dokáží sníst), loví predátoři jen omezené množství jedinců, které představuje jakousi hladinu nasycení. Tyto předpoklady zapíšeme ve tvaru rovností: p(0) = 0, p(N) = S pro N > Nkrit, kde parametr S představuje hladinu nasycení, Nkrit kritickou hodnotu velikosti populace (je-li velikost uvažované populace větší než kritická, predátoři jsou nasycení). Zvolme za p nejjednodušší funkci, která splňuje uvedené předpoklady, tedy funkci lineární na intervalu [0, Nkrit], jinak konstantní: p(N) = S Nkrit N ... N Nkrit, S ... N > Nkrit. (3.7) U předešlého modelu jsme dospěli k rovnici N(t + 1) = (1 + a - b) N(t) - c N(t)2 , N(0) = N0 (3.8) v diskrétním případě a k rovnici N (t) = (a - b) N(t) - c N(t)2 , N(0) = N0 (3.9) ve spojitém případě. Označme v nich r = a - b, K = a - b c . Parametr r, tj. rozdíl porodnosti a úmrtnosti bez vlivu velikosti populace, se nazývá vnitřní koeficient růstu populace. Parametr K vyjadřuje úživnost prostředí, tj. takovou velikost 33 populace, při níž je populace v dynamické rovnováze s prostředím (neroste ani nevymírá). Při tomto označení můžeme rovnice modelu v diskrétním případě přepsat na tvar N(t + 1) = N(t) + r N(t) 1 - N(t) K , N(0) = N0 (3.10) a ve spojitém na tvar N (t) = r N(t) 1 - N(t) K , N(0) = N0. (3.11) Obě tyto rovnice lze za použití časového kroku h vyjádřit ve tvaru N(t + h) = N(t) + r N(t) 1 - N(t) K h, N(0) = N0. (3.12) Výraz r N(t) 1 - N(t) K h lze interpretovat jako přirozený přírůstek velikosti populace za časový interval délky h. Rovnice (3.10) je rovnicí (3.12) pro h = 1, rovnice (3.11) je mezním případem rovnice (3.12) pro h 0. Nyní vyjádříme změnu velikosti populace za časový interval délky h jako přirozený přírůstek populace zmenšený o množství ulovených jedinců. Rovnici (3.12) tedy dále modifikujeme a dostaneme model růstu populace pod tlakem nespecializovaného predátora ve tvaru N(t + h) = N(t) + r N(t) 1 - N(t) K h - p N(t) h, N(0) = N0, (3.13) kde funkce p je dána rovností (3.7). Pro h = 1 dostaneme model diskrétní: N(t + 1) = N(t) + r N(t) 1 - N(t) K - p N(t) , N(0) = N0, (3.14) limitním přechodem h 0 dostaneme model spojitý: N (t) = r N(t) 1 - N(t) K - p N(t) , N(0) = N0. (3.15) 34 3.2.2 Implementace modelu a jeho řešení S rostoucí složitostí modelu vzrůstá i náročnost výpočtu řešení. Podobně jako v předchozím modifikovaném modelu nejsme schopni určit řešení diskrétního případu (3.14), z rekurentního předpisu však můžeme (při znalosti numerických hodnot parametrů modelu) určit hodnotu velikosti populace v libovolném čase t. Ve spojitém případě je možné rovnici (3.15) rozložit na dva případy (podle (3.7)) a v Maple již známým postupem (Solve DE > N(t)) nalézt řešení pro každý případ zvlášť. Tento postup je však možný jedině tehdy, kdy je velikost populace stále ,,pod hladinou Nkrit, nebo stále nad ní (připouštíme i rovnost). V obecném případě je nutné řešit rovnici (3.15) za pomoci numerických metod, k čemuž musíme znát numerické hodnoty všech parametrů modelu. Můžeme opět uvažovat populaci zajíce polního, na jehož území nyní žije i liška obecná jakožto nespecializovaný predátor. Pro jednoduchost zvolme následující nastavení parametrů: S = 300, r = 1, K = 1000, Nkrit = 200, N0 = 500. V systému Maple nastavíme proměnným příslušné hodnoty a zapíšeme rovnici ve tvaru znázorněném na obrázku 3.15. K zápisu dvou možných případů pro funkci p(N(t)) přitom využijeme symbolu tvaru otevřené složené závorky v paletě Exression reprezentující výraz definovaný po částech. Obrázek 3.15: Zápis rovnice (3.15). Obrázek 3.16: ODE Analyzer Assistant. 35 Po kliknutí pravým tlačítkem myši na rovnici a zvolením Solve DE Interactively se nám zobrazí okénko ODE Analyzer Assistant s upraveným tvarem rovnice a počáteční podmínkou (obrázek 3.16). V tomto okénku je možné rovnici dále upravovat, měnit počáteční podmínky, zavádět a rušit parametry modelu atd. My máme již vše ,,nachystané , a tak klikneme na tlačítko Solve Numerically pro numerický výpočet řešení. Přejdeme tak do dalšího okénka, jež po levé straně nabízí numerické metody, které můžeme použít k nalezení řešení, a nastavení absolutní a relativní chyby výpočtu. Využijeme standardního nastavení (tj. nebudeme nic měnit) a klikneme na tlačítko Plot pro vykreslení řešení. Okénko s vykresleným řešením poskytuje obrázek 3.17. Po stisknutí tlačítka Quit se vrátíme zpět do zápisníku Maple, do nějž bude vložen graf řešení. Obrázek 3.17: Numerické řešení rovnice (3.15). 3.2.3 Analýza řešení Víme, že v případě, kdy modelovanou populaci neohrožuje žádný predátor, se velikost populace ustálí na hodnotě K představující úživnost prostředí. Podívejme se, na jaké hodnotě se ustálí velikost populace nyní. Obě rovnice (3.14), (3.15) vyjadřují změnu velikosti populace v čase. Ustálená hodnota řešení je přitom taková, která se v čase nemění, tj. v diskrétním případě pro ni platí: N(t + 1) - N(t) = 0 (3.16) a ve spojitém: N (t) = 0. (3.17) 36 Obojí vede na rovnici r N(t) 1 - N(t) K - p N(t) = 0. (3.18) Rovnici (3.18) vyřešíme v systému Maple pro oba případy (viz (3.7)) jejím zapsáním, kliknutím na pravé tlačítko myši a zvolením Solve > Solve for Variable > N.5 Výsledek poskytuje obrázek 3.18. Obrázek 3.18: Řešení rovnice (3.18). Získaná nenulová řešení ještě upravíme a označíme: N1 = K 1 - S r Nkrit , N2 = 1 2 K 1 - 1 - 4 S r K , N3 = 1 2 K 1 + 1 - 4 S r K . Rozborem těchto řešení můžeme rozlišit několik situací chování modelu ve spojitém případě v závislosti na hodnotách jeho parametrů. Pro každou z možností následuje obrázek řešení s vytvořujícím kódem v systému Maple. Pro nalezení řešení modelu je použit příkaz dsolve s parametrem numeric, jenž zajistí numerické řešení příslušné diferenciální rovnice. Grafy řešení jsou vytvořeny příkazem odeplot patřícího do balíku plots a ukládány do pole (s názvem graf), které je následně vykresleno najednou příkazem display z balíku plots. 5 Proměnnou N tu chápeme jako konstantu, takže ji nezadáváme jako funkci času N(t). 37 1. S 1 4 r K a) Nkrit S r Predátor vyhubí uvažovanou populaci při jakékoliv počáteční hodnotě N0 0 ­ obrázek 3.19 pro nastavení parametrů: S = 300, r = 1, K = 1000, Nkrit = 200, N0 {50, 100, ..., 1000} Obrázek 3.19: Růst populace pod tlakem nespecializovaného predátora v případě 1. a) 38 b) Nkrit > S r : Velikost populace se ustálí na hodnotě N1 při jakékoliv počáteční hodnotě N0 > 0, tj. predátor zmenší stabilizovanou velikost populace (z hodnoty K) ­ obrázek 3.20 pro nastavení parametrů: S = 300, r = 1, K = 1000, Nkrit = 400, N0 {50, 100, ..., 1000} N1 = 250 Obrázek 3.20: Růst populace pod tlakem nespecializovaného predátora v případě 1. b) 39 2. S < 1 4 r K a) Nkrit > N2: Velikost populace se ustálí na hodnotě N3 při jakékoliv počáteční hodnotě N0 > 0, tj. predátor zmenší stabilizovanou velikost populace (z hodnoty K) ­ obrázek 3.21 pro nastavení parametrů: S = 200, r = 1, K = 1000, Nkrit = 400, N0 {50, 100, ..., 1000} N1 = 500, N2 . = 276, N3 . = 724 Obrázek 3.21: Růst populace pod tlakem nespecializovaného predátora v případě 2. a) 40 b) S r < Nkrit N2: Obrázek 3.22: Růst populace pod tlakem nespecializovaného predátora v případě 2. b) Pokud N0 > N2, velikost populace se ustálí na hodnotě N3. Pokud N0 < N2, ustálí se na hodnotě N1. Pro N0 = N2 zůstane velikost populace stejná. Predátor tedy opět zmenší stabilizovanou velikost populace; nová stabilizovaná velikost populace však závisí na její počáteční velikosti ­ obrázek 3.22 pro na- 41 stavení parametrů: S = 200, r = 1, K = 1000, Nkrit = 400, N0 {50, 100, ..., 1000} N1 = 200, N2 . = 276, N3 . = 724 Tuto možnost lze také interpretovat takto: velikost dynamicky stabilizované populace závisí na historii. Pokud populace invadovala do prostředí obsazeného populací predátora, je stabilizovaná populace malá. Naopak, pokud do prostředí se stabilizovanou populací invadovala populace predátora, je stabilizovaná populace velká. c) Nkrit S r : Pokud N0 > N2, velikost populace se ustálí na rovnovážné hodnotě N3. Pokud N0 < N2, ustálí se na hodnotě 0. Pro N0 = N2 zůstane velikost populace konstantní. Predátor tedy zmenší stabilizovanou velikost populace nebo populaci vyhubí v závislosti na její počáteční velikosti ­ obrázek 3.23 pro nastavení parametrů: S = 200, r = 1, K = 1000, Nkrit = 400, N0 {50, 100, ..., 1000} N2 . = 276, N3 . = 724 42 Obrázek 3.23: Růst populace pod tlakem nespecializovaného predátora v případě 2. c) 43 Předešlé možnosti chování modelu platí pro spojitý případ (3.15). V diskrétním případě (3.14) je situace složitější. Obrázek 3.24 ilustruje možnost 2. a) (tj. S < 1 4 rK, Nkrit > N2) v diskrétním případě. V levém grafu jsou vykreslena všechna řešení najednou, v pravém je vytvořena animace v závislosti na počáteční velikosti populace. Můžeme vidět, že v tomto případě se velikost populace v čase neustálí na jedné hodnotě, ale osciluje kolem ní. Obrázek 3.24: Růst populace pod tlakem nespecializovaného predátora v diskrétní podobě případu 2. a) 44 Při určitém nastavení parametrů se nám dokonce může stát, že řešení modelu bude dosahovat záporných čísel, jak ilustruje obrázek 3.25 pro možnost 1. a) (tj. S 1 4 r K, Nkrit S r ). Příčinou je příliš velký časový krok pro dané hodnoty parametrů modelu. Obrázek 3.25: Růst populace pod tlakem nespecializovaného predátora v diskrétní podobě případu 1. a) 3.3 Interagující populace Uvažujme rovnici (3.12) z předešlého modelu vyjadřující růst populace v omezeném prostředí, tj. rovnici N(t + h) = N(t) + r N(t) 1 - N(t) K h, N(0) = N0 (3.19) 45 a její diskrétní N(t + 1) = N(t) + r N(t) 1 - N(t) K , N(0) = N0 (3.20) a spojitou variantu N (t) = r N(t) 1 - N(t) K , N(0) = N0. (3.21) Rovnici neomezeného (exponenciálního) růstu populace N(t + h) = N(t) + r N(t) h, (3.22) případně její diskrétní N(t + 1) = N(t) + r N(t) (3.23) nebo spojitou variantu N (t) = r N(t), (3.24) lze považovat za speciální případ rovnice (3.19), případně (3.20) nebo (3.21), pro K = , neboť lim K N(t) K = 0 pro jakoukoliv hodnotu N(t). 3.3.1 Modely dvou interagujících populací Nyní budeme uvažovat dvě populace na jednom území. Označme N1(t), resp. N2(t), velikost první, resp. druhé, populace v čase t. Pokud by na sebe populace vzájemně nepůsobily, vývoj velikosti každé z nich by bylo možné modelovat pomocí rovnice (3.19); o kterou z populací jde, bychom odlišili dolním indexem u všech parametrů, tedy N1(t + h) = N1(t) + r1 N1(t) 1 - N1(t) K1 h, N2(t + h) = N2(t) + r2 N2(t) 1 - N2(t) K2 h. Vliv velikosti jedné populace na růst druhé se může realizovat buď prostřednictvím prostředí, které obě populace obývají, nebo přímo. 46 Model, kdy j-tá populace ovlivňuje prostředí, v němž žije populace i-tá Kvalitu prostředí pro i-tou populaci v našem modelu vyjadřuje jediný parametr Ki ­ úživnost (nosná kapacita) prostředí. Pokud j-tá populace ovlivňuje prostředí, jeho úživnost již nebude konstanta Ki, ale bude záviset na velikosti j-té populace. Konstantu Ki nahradíme funkcí i argumentu Nj(t). Vývoj i-té populace tedy bude popsán rovnicí Ni(t + h) = Ni(t) + ri Ni(t) 1 - Ni(t) i Nj(t) h. (3.25) Nyní budeme specifikovat funkci i. Ta musí splňovat dva přirozené předpoklady: * Pokud není j-tá populace přítomná, je úživnost prostředí nezměněna, tedy rovna původní hodnotě Ki. Přesněji i(0) = Ki. * Pokud je j-tá populace veliká, změní úživnost prostředí na hodnotu Cij, tedy lim x i(x) = Cij. Jednoduchá funkce, která splňuje obě podmínky, je funkce lomená s lineární funkcí v čitateli i jmenovateli, tedy i(x) = Ki + Cij ij x 1 + ij x . (3.26) Obrázek 3.26: Význam parametru ij. V předpisu funkce se objevuje nový parametr ij. Abychom lépe viděli jeho význam, určeme derivaci funkce i v bodě 0 a výsledek vydělme rozdílem Cij - Ki. Obrázek 3.26 ilustruje tento výpočet v systému Maple. 47 Vidíme, že parametr ij je roven právě zmíněnému výrazu. Vyjadřuje tedy relativní změnu úživnosti prostředí pro i-tou populaci způsobenou malou (invazní) populací j-tou vzhledem k celkovému možnému rozpětí úživnosti prostředí. Je přirozené předpokládat, že konstanty Ki, Cij jsou nezáporné (v prostředí nemůže být populace záporné velikosti) a že alespoň jedna z nich je kladná (prostředí populaci někdy uživí). Vztah konstant Ki a Cij vyjadřuje ekologickou klasifikaci vztahu j-té populace k i-té: * Ki = Cij j-tá populace je k i-té neutrální. * Ki > Cij j-tá populace je amensálem populace i-té. * Ki < Cij j-tá populace je komensálem populace i-té. V této situaci můžeme dále rozlišit: ­ Ki = 0 ­ i-tá populace by bez přítomnosti j-té nepřežila; j-tá populace je obligátním komensálem populace i-té. ­ Ki > 0 ­ i-tá populace přežívá i bez přítomnosti j-té; j-tá populace je fakultativním komensálem populace i-té. Z rovností (3.25) a (3.26) dostáváme model vývoje velikostí dvou interagujících populací ve tvaru soustavy rovnic N1(t + h) = N1(t) + r1 N1(t) 1 N1(t) 1 + 12 N2(t) K1 + C12 12 N2(t) h, N2(t + h) = N2(t) + r2 N2(t) 1 N2(t) 1 + 21 N1(t) K2 + C21 21 N1(t) h. (3.27) Tuto soustavu rovnic můžeme pro h 0 konkrétně zapsat jako soustavu rovnic diferen- ciálních N1(t) = r1 N1(t) 1 N1(t) 1 + 12 N2(t) K1 + C12 12 N2(t) , N2(t) = r2 N2(t) 1 N2(t) 1 + 21 N1(t) K2 + C21 21 N1(t) . (3.28) nebo pro h = 1 jako soustavu rovnic diferenčních N1(t + 1) = N1(t) + r1 N1(t) 1 N1(t) 1 + 12 N2(t) K1 + C12 12 N2(t) , N2(t + 1) = N2(t) + r2 N2(t) 1 N2(t) 1 + 21 N1(t) K2 + C21 21 N1(t) . (3.29) 48 V případě komensalismu může dojít i k tomu, že populace komensála při rostoucí velikosti zvětšuje úživnost prostředí nade všechny meze, lim x i(x) = . Nejjednodušší funkce, která modeluje tento jev, je funkce lineární i(x) = Ki + ij x. Zde kladný parametr ij vyjadřuje absolutní nárůst úživnosti prostředí pro i-tou populaci způsobený j-tou populací o jednotkové velikosti. Model konkurence (kompetice) První populace je amensálem druhé, druhá je amensálem první. Velikosti obou populací se ustálí na nových rovnovážných hodnotách menších, než byly hodnoty pro izolované (vzájemně se neovlivňující) populace. Obrázek 3.27: Řešení modelu konkurence dvou populací. Obrázek 3.27 ukazuje řešení modelu konkurence v Maple. Původní úživnosti prostředí jsou rovny 1000, resp. 1500, tj. v případě, že by se populace vzájemně neovlivňovaly (neovlivňovaly by prostředí, v nemž žijí), ustálily by se jejich velikosti na zmíněných hodnotách. Pro model konkurence platí K1 > C12 a K2 > C21. V příkladu na obrázku byly zvoleny hodnoty konstant C12 = 600 a C21 = 1000. Vidíme, že pro libovolné počáteční stavy populací se velikosti obou ustálí na hodnotách C12 a C21. K zobrazení grafů jsme použili příkaz DEplot k vykreslování řešení systému diferenciálních rovnic z balíku DEtools. Symbol je v systému Maple obsazený, parametr ij proto zadáváme s indexy za řeckým písmenem (čímž vytvoříme neobsazený název pro proměnnou). Dvěma do sebe vnořenými for-cykly vytváříme grafy řešení pro různá nastavení počátečních hodnot. 49 Pro zobrazení jednotlivých řešení můžeme vytvořit animaci podobně jako u předchozího modelu v diskrétním případě. K programovému kódu z obrázku 3.27 stačí přidat kód z obrázku 3.28. Obrázek 3.28: Řešení modelu konkurence dvou populací ­ animace. Model mutualismu (symbiózy) První populace je komensálem druhé, druhá je komensálem první. V případě ,,omezeného komensalismu modelovaného rovnicemi (3.28) nebo rovnicemi N1(t) = r1 N1(t) 1 N1(t) 1 + 12 N2(t) K1 + C12 12 N2(t) , N2(t) = r2 N2(t) 1 - N2(t) K2 + 21 N1(t) (alespoň jedna z konstant C12, C21 je konečná) se velikosti obou populací ustálí na nových rovnovážných hodnotách. V případě ,,neomezeného komensalismu modelovaného rovnicemi N1(t) = r1 N1(t) 1 - N1(t) K1 + 12 N2(t) , N2(t) = r2 N2(t) 1 - N2(t) K2 + 21 N1(t) 50 záleží na hodnotách parametrů 12, 21. Pokud 12 21 < 1, velikosti obou populací se ustálí na nových rovnovážných hodnotách. Pokud 12 21 1, velikosti obou populací rostou nade všechny meze. V realitě by to znamenalo, že populace zničí svoje prostředí. Tomuto jevu se říká ,,orgie vzájemné dobročinnosti. Obrázek 3.29: Řešení modelu symbiózy dvou populací pro C12 < , C21 < . Obrázek 3.30: Řešení modelu symbiózy dvou populací pro C12 = C21 = , 12 21 < 1. 51 Obrázky 3.29 ­ 3.31 ilustrují různé podoby chování řešení modelu symbiózy. Na prvním z nich je znázorněno řešení ,,omezeného komensalismu, kdy jsou obě konstanty C12, C21 konečné a velikosti populací se ustálí na těchto hodnotách. Obrázek 3.30 ukazuje ,,neomezený komensalismus v případě 12 21 < 1, obrázek 3.31 v případě 12 21 1. Obrázek 3.31: Řešení modelu symbiózy dvou populací pro C12 = C21 = , 12 21 1. Model predace První populace (kořist) je komensálem druhé, druhá populace (dravec) je amensálem první. Rozlišme dva případy: * predátor je specializovaný ­ bez populace kořisti nemůže přežít (K2 = 0), * predátor je nespecializovaný ­ může přežít i bez populace kořisti, má alternativní zdroje potravy, ale dostupnost populace kořisti ho ovlivňuje (K2 > 0). V obou případech se velikosti populací ustálí na nějaké rovnovážné hodnotě. U tohoto modelu predátor nemůže kořist vyhubit ani v případě, že zmenší kapacitu prostředí pro populaci kořisti na nulu, C12 = 0, (na rozdíl od modelu, kde byla velikost populace predátora na populaci kořisti nezávislá). Takto formulovaný model predace není úplně adekvátní. Populace kořisti sice skutečně zvětšuje úživnost prostředí pro predátora, ale predátor neovlivňuje prostředí pro populaci kořisti; kořist hubí, tj. zvětšuje její úmrtnost. Obrázek 3.32 ukazuje řešení modelu predace v případě specializovaného predátora. 52 Obrázek 3.32: Řešení modelu predace pro K2 = 0. Modely, kdy j-tá populace ovlivňuje relativní přírustek i-té populace Vývoj i-té populace, na niž působí populace j-tá, budeme modelovat rovnicí stejného typu, jako je rovnice (3.19). Vliv j-té populace na i-tou vyjádříme změnou relativního přírůstku i-té populace ri 1 - Ni(t) Ki . Budeme předpokládat, že j-tá populace, pokud s populací i-tou interaguje, k tomuto přírůstku přidává (nebo od něho ubírá) nějakou hodnotu. A dále, že tato hodnota je tím větší, čím větší je velikost j-té populace. Opět zvolíme tu nejjednodušší možnost: budeme předpokládat, že změna relativního přírůstku i-té populace je přímo úměrná velikosti populace j-té a konstantu úměrnosti označíme ij. Parametr ij budeme považovat za kladný, druh vlivu j-té populace na i-tou rozlišíme znaménkem. Je-li tedy j-tá populace komensálem populace i-té, bude vývoj i-té populace popsán rovnicí Ni(t + h) = Ni(t) + Ni(t) ri 1 - Ni(t) Ki + ij Nj(t) h = = Ni(t) + Ni(t) ri - ri Ki Ni(t) + ij Nj(t) h, je-li j-tá populace amensálem i-té, bude vývoj i-té populace popsán rovnicí Ni(t + h) = Ni(t) + Ni(t) ri - ri Ki Ni(t) - ij Nj(t) h. Tento model lze jednotně zapsat ve tvaru Ni(t + h) = Ni(t) + Ni(t) ri - ri Ki Ni(t) + sij ij Nj(t) h, 53 kde sij = 1, j-tá populace je komensálem i-té -1, j-tá populace je amensálem i-té. Dynamika dvou populací tedy bude modelována soustavou dvou rovnic N1(t + h) = N1(t) + N1(t) r1 - r1 K1 N1(t) + s12 12 N2(t) h, N2(t + h) = N2(t) + N2(t) r2 - r2 K2 N2(t) + s21 21 N1(t) h. (3.30) Pro h 0 dostaneme soustavu Lotkových-Volterrových obyčejných diferenciálních rovnic N1(t) = N1(t) r1 - r1 K1 N1(t) + s12 12 N2(t) , N2(t) = N2(t) r2 - r2 K2 N2(t) + s21 21 N1(t) . (3.31) Model konkurence (kompetice) První populace je amensálem druhé, druhá je amensálem první: N1(t) = N1(t) r1 - r1 K1 N1(t) - 12 N2(t) , N2(t) = N2(t) r2 - r2 K2 N2(t) - 21 N1(t) . Na základě vztahů mezi parametry můžeme rozlišit čtyři různé kvalitativní výsledky modelu: * K1 < r2 21 , K2 < r1 12 : velikosti populací se ustálí na hodnotách menších než původní úživnosti ­ koexistence populací (analogický výsledek k předchozímu modelu konkurence), obrázek 3.33. 54 Obrázek 3.33: Řešení modelu konkurence pro K1 < r2 21 , K2 < r1 12 . Obrázek 3.34: Řešení modelu konkurence pro K1 < r2 21 , K2 > r1 12 . 55 ˇ K1 < r2 21 , K2 > r1 12 : velikost druhé populace se ustálí na původní úživnosti prostředí, tj. na hodnotě K2, velikost první populace se ustálí na hodnotě 0, tj. první populace vymře (konkurenční vyloučení první populace), obrázek 3.34. * K1 > r2 21 , K2 < r1 12 : velikost první populace se ustálí na původní úživnosti prostředí, tj. na hodnotě K1, velikost druhé populace se ustálí na hodnotě 0, tj. druhá populace vymře (konkurenční vyloučení druhé populace), obrázek 3.35. Obrázek 3.35: Řešení modelu konkurence pro K1 > r2 21 , K2 < r1 12 . * K1 > r2 21 , K2 > r1 12 : jedna populace vymře, velikost zbývající se ustálí na původní úživnosti prostředí. Která populace vymře, závisí na počátečních hodnotách, jak dokumentuje obrázek 3.36. Pro zjištění, která z populací vymře a při jakých počátečních hodnotách jejich velikostí, můžeme opět využít animace zobrazující jednotlivá řešení, viz obrázek 3.37 . 56 Obrázek 3.36: Řešení modelu konkurence pro K1 > r2 21 , K2 > r1 12 . Obrázek 3.37: Animace řešení modelu konkurence pro K1 > r2 21 , K2 > r1 12 . 57 Model predace První populace (kořist) je komensálem druhé, druhá populace (dravec) je amensálem první: N1(t) = N1(t) r1 - r1 K1 N1(t) - 12 N2(t) , N2(t) = N2(t) r2 - r2 K2 N2(t) + 21 N1(t) . Poněvadž konstanta K2 je ve jmenovateli, musí být nenulová, tj. K2 > 0. Jedná se tedy o nespecializovaného predátora, který může přežít i bez uvažované populace kořisti, tj. má nějaké alternativní zdroje potravy. Pokud K2 < r1 12 , populace koexistují, jejich velikosti se ustálí na nějakých hodnotách ­ u populace kořisti menší než K1, u populace dravce větší než K2. Pokud K2 > r1 12 , dravec kořist vyhubí. Popsané případy ilustrují obrázky 3.38 a 3.39. Obrázek 3.38: Řešení modelu predace pro K2 < r1 12 . 58 Obrázek 3.39: Řešení modelu predace pro K2 > r1 12 . 3.3.2 Model dravec-kořist Leslieho typu Budeme předpokládat, že populace predátora zmenšuje relativní přírůstek populace kořisti a že populace kořisti zvětšuje úživnost prostředí pro populaci predátora. Velikost populace kořisti vlastně určuje velikost úživnosti prostředí pro populaci predátora. Pokud by tedy byla populace kořisti neomezená, byla by neomezená i úživnost. Za těchto předpokladů a při označení N1(t) ... velikost populace kořisti v čase t, N2(t) ... velikost populace predátora v čase t dostáváme model vývoje velikostí populací ve tvaru N1(t + h) = N1(t) + N1(t) r1 - r1 K1 N1(t) - 1,2 N2(t) h, N2(t + h) = N2(t) + r2 N2(t) 1 - N2(t) K2 + 21 N1(t) h. V případě K2 = 0 se jedná o specializovaného predátora, v případě K2 > 0 o nespecializovaného. Pro h 0 dostaneme soustavu diferenciálních rovnic N1(t) = N1(t) r1 - r1 K1 N1(t) - 1,2 N2(t) , N2(t) = r2 N2(t) 1 - N2(t) K2 + 21 N1(t) . 59 Obrázek 3.40: Řešení Leslieho modelu pro K2 < r1 12 . Obrázek 3.41: Řešení Leslieho modelu pro K2 > r1 12 . 60 Analogicky k předešlému modelu predace populace koexistují v případě K2 < r1 12 , v případě K2 > r1 12 dravec kořist vyhubí (tato možnost může nastat jedině v případě nespecializovaného predátora, K2 > 0). Při numerickém řešení modelových rovnic se může stát, že grafem řešení není hladká funkce, i když by být měla. Na vině je nedostatek bodů, v nichž Maple vypočítá hodnotu řešení. Standardně je řešení počítáno v 50 bodech, přičemž tuto hodnotu můžeme změnit nastavením parametru numpoints příkazu DEplot. Takové nastavení bylo provedeno například v kódu na obrázku 3.40. 3.3.3 Model dravec-kořist Gauseho typu Budeme předpokládat, že velikost populace kořisti, pokud by byla přítomná populace predátora o neměnné jednotkové velikosti, by se vyvíjela podle rovnice N1(t + h) = N1(t) + r1 N1(t) 1 - N1(t) K1 h - p N1(t) h, stejně jako populace pod konstantním tlakem nespecializovaného predátora (viz podkapitola 3.2). Výraz p(N1) vyjadřuje množství kořisti, které za jednotkový čas zničí populace predátora o určité velikosti, kterou můžeme považovat za jednotkovou, za předpokladu, že populace kořisti má velikost N1(t). Funkce p = p(N1) se nazývá trofická funkce nebo funkcionální odezva predátora na populaci kořisti o velikosti N1. Populace predátora o velikosti N2(t) tedy za jednotku času zničí N2 p(N1) kořisti. Vývoj velikosti populace kořisti tedy bude popsán rovnicí N1(t + h) = N1(t) + r1 N1(t) 1 - N1(t) K1 h - N2(t) p N1(t) h. (3.32) O predátorovi budeme předpokládat, že je specializovaný a tedy bez přítomnosti kořisti nemůže přeľít. Vývoj velikosti jeho izolované populace by tedy bylo možno modelovat rovnicí (3.34) se záporným růstovým koeficientem, tj. rovnicí N2(t + h) = N2(t) - N2(t) h. Dále budeme předpokládat, že množství kořisti N2(t) p N1(t) h zničené populací predátora za časový interval délky h se s nějakou efektivitou c přemění v populaci predátora. Z tohoto předpokladu dostaneme rovnici popisující vývoj velikosti populace predátora, který zničenou kořist transformuje do přírůstku své velikosti; tato rovnice je tvaru N2(t + h) = N2(t) - N2(t) h + c N2(t) p N1(t) h. (3.33) 61 Limitním přechodem h 0 dostaneme z rovnic (3.32) a (3.33) model vývoje velikostí populací kořisti a dravce jako soustavu dvou obyčejných diferenciálních rovnic N1(t) = r1 N1(t) 1 - N1(t) K1 - N2(t) p N1(t) , N2(t) = N2(t) - + c p N1(t) . Ještě je třeba specifikovat trofickou funkci p. Můžeme použít stejnou funkci jako v modelu vývoje populace pod tlakem nespecializovaného predátora, tj. p(N1) = S Nkrit N1, N1 Nkrit, S, N1 > Nkrit. Tato trofická funkce bývá v ekologické literatuře nazývána Hollingova typu I. Funkce podobného průběhu, tedy konkávní a taková, že p(0) = 0 a lim x p(x) = S, avšak diferencovatelná (bez zlomu) se nazývá Hollingova typu II. Nejjednodušší taková funkce je lomená p(N1) = S N1 N1 + ; kladný parametr má podobný význam jako Nkrit. Platí totiž p (0) = S Nkrit pro funkci typu I, p (0) = S pro funkci typu II. Nechť funkce p je nejprve trofická typu I. Obrázky 3.42 a 3.43 ukazují, že pro > c S vymře populace dravce a pro < c S obě populace koexistují pro libovolné nenulové počáteční hodnoty. V případě, že funkce p je trofická typu II, populace dravce opět vymře pro > cS. Pro < c S obě populace koexistují tak, že se jejich velikosti ustálí, jestliže > c S K1 - K1 + , nebo kolísají, pokud < c S K1 - K1 + . Zmíněné situace ukazují obrázky 3.44 ­ 3.46. 62 Obrázek 3.42: Řešení Gauseho modelu v případě, že p je trofická funkce typu I pro > cS. Obrázek 3.43: Řešení Gauseho modelu v případě, že p je trofická funkce typu I pro < cS. 63 Obrázek 3.44: Řešení Gauseho modelu v případě, že p je trofická funkce typu II pro > cS. Obrázek 3.45: Řešení Gauseho modelu v případě, že p je trofická funkce typu II pro < cS a > c S K1 - K1 + . 64 Obrázek 3.46: Řešení Gauseho modelu v případě, že p je trofická funkce typu II pro < cS a < c S K1 - K1 + . 3.3.4 Společenstva n druhů ­ Lotkův-Volterrův systém Opět budeme vycházet z modelu neomezeného růstu jedné populace ve tvaru N(t + h) = N(t) + r N(t) h, (3.34) v jeho spojité N (t) = r N(t) (3.35) nebo diskrétní N(t + 1) = N(t) + r N(t) (3.36) variantě. Uvažujme společenstvo tvořené n populacemi (biologickými druhy, případně vyššími či nižšími taxonomickými kategoriemi), které se mohou vzájemně ovlivňovat. Chceme modelovat vývoj velikostí jednotlivých populací v čase. Označíme Ni = Ni(t) . . . velikost i-té populace v čase t, ri . . . růstový koeficient i-té populace. Vzájemné ovlivňování populací budeme modelovat tak, že růstový koeficient i-té populace ri závisí na velikostech všech populací tvořících společenstvo (včetně i-té), tedy ri = ri(N1, N2, . . . , Nn), i = 1, 2, . . . , n. 65 Zvolíme tu nejjednodušší možnost, tedy závislost lineární, ri = ai + n j=1 bij Nj. Jednotlivé koeficienty lze interpretovat následovně: ai . . . Vnitřní koeficient růstu i-té populace. Pokud ai > 0, izolovaná i-tá populace by v daném prostředí rostla, pokud ai < 0, izolovaná i-tá populace by v daném prostředí vymírala. bii . . . Síla vnitrodruhové konkurence nebo kooperace. Pokud bii < 0, jedná se o vnitrodruhovou konkurenci, pokud bii > 0, jedná se o vnitrodruhovou kooperaci. bij . . . Síla vlivu j-té populace na růst i-té. bij > 0 . . . j-tá populace je komensálem i-té, bij < 0 . . . j-tá populace je amensálem i-té, bij = 0 . . . j-tá populace je k i-té neutrální. Tímto způsobem dostaneme model vývoje společenstva ve tvaru n rovnic Ni(t + h) = Ni(t) + Ni(t) ai + n j=1 bij Nj(t) h, i = 1, 2, . . . , n. (3.37) Obvykle je používán spojitý případ Ni(t) = Ni(t) ai + n j=1 bij Nj(t) , i = 1, 2, . . . , n, (3.38) známý jako Lotkův-Volterrův systém. Například model vývoje dvou konkurujících si populací N1(t) = N1(t) r1 - r1 K1 N1(t) - 12N2(t) , N2(t) = N2(t) r2 - r2 K2 N2(t) - 21N1(t) . je typu (3.38). V něm je a1 = r1, b11 = - r1 K1 , b12 = -12, a2 = r2, b21 = -21, b22 = - r2 K2 . 66 Povšimněme si, že za systém typu (3.38) lze považovat také model růstu jedné populace N (t) = r N(t) 1 - N(t) K ; (3.39) zde je n = 1, a1 = r, a11 = - r K . Někdy je výhodné, aby všechny parametry modelu byly kladné. V takovém případě položíme6 i = |ai|, si = sgn(ai), ij = |bij|, ij = sgn(bij) a systém (3.38) zapíšeme ve tvaru Ni(t) = Ni(t) si i + n j=1 ij ij Nj(t) , i = 1, 2, . . . , n. Nyní představíme tři různé modely soužití tří populací. Situace je ještě komplikovanější než dříve, modely obsahují více parametrů, a je tak více možností, jak mohou vypadat jejich řešení. U každého modelu si proto ukážeme jen nějaký zajímavý příklad. Model konkurence tří populací Model konkurence tří populací je popsán systémem rovnic N1(t) = N1(t) 1 - 11 N1(t) - 12 N2(t) - 13 N3(t) , N2(t) = N2(t) 2 - 21 N1(t) - 22 N2(t) - 23 N3(t) , N3(t) = N3(t) 3 - 31 N1(t) - 32 N2(t) - 33 N3(t) . Nechť koeficienty splňují podmínky 2 1 12 22 > 1, 3 2 23 33 > 1, 3 1 31 11 > 1, 3 1 13 33 < 1, 1 2 21 11 < 1, 2 3 32 22 < 1, 1 - 3 1 13 33 1 - 1 2 21 11 1 - 2 3 32 22 > 2 1 12 22 - 1 3 2 23 33 - 1 3 1 31 11 - 1 . Můžeme například volit 1 = 2 = 3 = 1, 11 = 22 = 33 = 0.01, 12 = 23 = 31 = 0.015, 21 = 32 = 13 = 0.003. 6 sgn je znaménková funkce, tj. sgn(x) = 1 pro x > 0, sgn(x) = -1 pro x < 0, sgn(x) = 0 pro x = 0. 67 V případě, že N1(0) > 0, N2(0) > 0, N3(0) > 0, se velikosti všech tří populací ustálí na nějaké nenulové hodnotě. Pokud je alespoň jedna z počátečních velikostí N1(0), N2(0), N3(0) nulová, pak přežije pouze jedna z populací tvořících společenstvo. Obrázek 3.47: Řešení modelu konkurence tří populací pro kladné počáteční hodnoty velikostí každé z populací. Obrázek 3.48: Řešení modelu konkurence tří populací v případě nepřítomnosti jedné z populací. 68 Obrázek 3.47 ilustruje jednotlivá řešení modelu pro nenulové počáteční velikosti populací, pro jedno zvolené nastavení (každá populace má jinou počáteční velikost) jsou zobrazena všechna tři řešení najednou. Případ, kdy jedna z populací není přítomna (tj. její počáteční velikost je nulová), je zobrazen na obrázku 3.48. Žádné dvě z konkurujících si populací nemohou koexistovat, všechny tři dohromady ano. Jedná se o příklad, kdy komplexnější společenstvo (tři konkurující si populace) je ekologicky stabilnější (populace dlouhodobě koexistují), než společenstvo méně komplexní (dvě konkurující si populace). Predátor živící se dvěma konkurujícími si populacemi Tento model popisuje systém rovnic N1(t) = N1(t) 1 - 11 N1(t) - 12 N2(t) - 13 N3(t) , N2(t) = N2(t) 2 - 21 N1(t) - 22 N2(t) - 23 N3(t) , N3(t) = N3(t) - 3 + 31 N1(t) + 32 N2(t) . V tomto případě N1 = N1(t) a N2 = N2(t) označují velikosti konkurujících si populací kořisti, N3 = N3(t) označuje velikost populace predátora. Zajímavá volba parametrů může být 1 = 1, 2 = 2, 3 = 1.5, 11 = 0.005, 12 = 0.0001, 13 = 0.03, 21 = 0.01, 22 = 0.005, 23 = 0.02, 31 = 0.03, 32 = 0.002. Pokud N3(0) = 0 (ve společenstvu se nevyskytuje predátor), pak při jakékoliv volbě počátečních velikostí populací kořisti takových, že N1(0) > 0 je lim t N2(t) = 0 (druhá z populací kořisti je konkurenčně vyloučena populací první). Tuto situaci znázorňuje obrázek 3.49. Znázorněna jsou opět jednotlivá řešení, jeden graf poskytuje zobrazení všech tří řešení najednou (každá populace má jinou počáteční velikost). Pokud ale N3(0) > 0 (populace predátora je ve společenstvu přítomná), je lim t N1(t) > 0 a také lim t N2(t) > 0, tj. obě konkurující si populace přežívají. Tomuto jevu se v ekologii říká koexistence zprostředkovaná predátorem (predator mediated coexistence). Predátor je v tomto smyslu obligátním komensálem své kořisti. Grafickou podobu zmíněného chování modelu představuje obrázek 3.50. 69 Obrázek 3.49: Řešení modelu predátora živícího se dvěma konkurujícími si populacemi za přítomnosti predátora. Obrázek 3.50: Řešení modelu predátora živícího se dvěma konkurujícími si populacemi za nepřítomnosti predátora. 70 Predátor živící se dvěma nekonkurujícími si populacemi Model je popsán systém rovnic N1(t) = N1(t) 1 - 13 N3(t) , N2(t) = N2(t) 2 - 23 N3(t) , N3(t) = N3(t) - 3 + 31 N1(t) + 32 N2(t) . V tomto případě opět N1 = N1(t) a N2 = N2(t) označují velikosti populací kořisti, N3 = N3(t) označuje velikost populace predátora. U populací kořisti nenastává mezidruhová ani vnitrodruhová konkurence; taková situace může nastat v případě, že zdroje pro populace kořistí jsou prakticky neomezené. Při volbě parametrů 1 = 3, 2 = 2, 3 = 1, 13 = 1 2 , 23 = 1 3 , 31 = 1 4 , 32 = 1 6 , a při počátečních hodnotách N1(0) = p, N2(0) = 6 - 3 2 p, N3(0) = 6, kde p je libovolné číslo z intervalu [0, 4], velikosti všech populací zůstavají konstantní jak dokumentuje obrázek 3.51. Je v něm navíc vytvořená animace vykreslující všechna tři řešení současně v závislosti na počátečních hodnotách. Při stejných parametrech ale jiných kladných počátečních hodnotách všechny populace dlouhodobě přežívají a jejich velikosti kolísají. Tuto situaci znázorňuje obrázek 3.52. Jsou v něm zobrazena zvlášť jednotlivá řešení, jeden z grafů zobrazuje všechna tři řešení současně pro počáteční velikosti populací: N1(0) = 1, N2(0) = 2, N3(0) = 6. Pokud nepatrně změníme jeden z parametrů 1, 13, jedna z populací kořisti vymře. Při zvětšení 1 nebo zmenšení 13 vymře druhá populace; při zmenšení 1 nebo zvětšení 13 vymře první populace. Analogické tvrzení platí pro změny parametrů 2, 23. Na obrázku 3.53 můžeme pozorovat jednotlivá řešení v případě zvětšeného parametru 1 (1 = 3.1). Pro počáteční hodnoty N1(0) = 1, N2(0) = 2, N3(0) = 6 jsou zobrazena všechna tři řešení současně. V tomto případě dlouhodobě koexistují všechna tři možná ,,podspolečenstva dvou druhů, společenstvo tvořené třemi druhy pouze při speciální volbě parametrů. Komplexnější společenstvo tedy není tak ekologicky stabilní jako společenstva méně komplexní. Uvedené tři příklady mohou také ukazovat, že vztah komplexity a stability společenstev není nijak jednoduchý. Někdy jsou komplexnější společenstva stabilnější než společenstva méně komplexní, jindy naopak. Názor tradovaný v ekologické literatuře, že ,,zvětšení komplexity nebo diverzity zvětšuje stabilitu , je tedy třeba upřesnit nebo specifikovat. 71 Obrázek 3.51: Řešení modelu predátora živícího se dvěma nekonkurujícími si populacemi pro N1(0) = p, N2(0) = 6 - 3 2 p, N3(0) = 6. Obrázek 3.52: Řešení modelu predátora živícího se dvěma nekonkurujícími si populacemi ­ různé počáteční hodnoty. 72 Obrázek 3.53: Řešení modelu predátora živícího se dvěma nekonkurujícími si populacemi ­ různé počáteční hodnoty, jedna z populací vymírá. 73 74 Kapitola 4 Modely se zahrnutím neurčitosti V předchozí kapitole jsme si ukázali několik příkladů matematických modelů. Model je přitom vždy zjednodušením pozorovaného systému, a obsahuje tak prvky, kterým říkáme neurčitosti. V první kapitole jsme si neurčitosti ovlivňující model rozdělili do tří kategorií. Nyní se podíváme blíže na některé populační modely předchozí kapitoly z pohledu datové neurčitosti, respektive neurčitosti v parametrech modelu. Pro jednoduchost budeme vždy uvažovat pouze spojitý případ. 4.1 Analýza neurčitosti Nejpoužívanějšími přístupy k reprezentaci neurčitostí v hodnotách parametrů modelu jsou [5, 7, 20]: 1. Intervalová aritmetika ­ užívá se k popisu datové neurčitosti vznikající buď nepřesností měření, nebo existencí několika alternativních metod (technik) k odhadu parametrů. Cílem intervalové analýzy je odhadnutí mezí výstupu modelu na základě mezí vstupů. V tomto přístupu se o vstupech nepředpokládá žádná další znalost, pouze ohraničení hodnot, jakých mohou nabývat. Každý neurčitý vstup je tak chápán jako interval, typicky [xi-, xi+], kde xi je ,,jakási střední hodnota příslušného parametru, který může nabývat libovolné hodnoty z uvedeného intervalu. Přitom nemáme k dispozici informaci o pravděpodobnostním rozložení těchto hodnot. Hlavní výhodou intervalové analýzy je schopnost popisovat neurčitosti bez znalosti pravděpodobnostní struktury vstupů. To je současně i nevýhodou, neboť charakterizace neurčitosti na výstupu je opět pouze prostřednictvím intervalu. V případech, kdy známe pravděpodobnostní rozložení hodnot vstupů, není tento typ analýzy doporučován. [5, 14] 2. Fuzzy teorie ­ metoda umožňující provádět analýzu neurčitostí v případech, kdy jsou neurčitosti způsobeny vágností či nejasností. Používá se při zacházení s parametry, které jsou konstantní (nenáhodné), není možné je měřit, ale jejich hodnota je známa. Často se přitom jedná o nematematickou hodnotu (např. ,,asi dvě , ,,tmavě zelený atp.). Fuzzy teorie je vhodnější ke kvalitativnímu posuzování než pro kvantitativní odhad neurčitosti. [5, 7] 75 3. Pravděpodobnostní analýza ­ nejrozšířenější metodoa popisu neurčitostí v modelech. Jednotlivé parametry jsou chápány jako náhodné veličiny s příslušným pravděpodobnostním rozložením hodnot, kterých mohou nabývat. Cílem pravděpodobnostní analýzy je určení pravděpodobnostního rozložení hodnot výstupu modelu. Pravděpodobnostní analýza má dva hlavní kroky. Prvním je určení pravděpodobnostního rozložení hodnot vstupních parametrů. To je zpravidla získáváno z odborné literatury, rozhodnutím experta, či z empirických dat. Druhým krokem analýzy je stanovení propagace neurčitosti (pravděpodobnostních rozložení) modelem. 4.2 Analýza citlivosti S analýzou neurčitostí je úzce spojena tzv. analýza citlivosti. Zatímco při analýze neurčitostí charakterizujeme veškeré neurčitosti na vstupu a chceme získat celkovou neurčitost na výstupu modelu, při analýze citlivosti zkoumáme, jak konkrétně výstup ovlivňují jednotlivé parametry modelu. Metody analýzy citlivosti rozdělujeme na lokální a globální. Lokální metody určují, jak citlivý je výstup modelu na změny vstupních parametrů v ,,těsné blízkosti nějaké jejich reprezentativní hodnoty (typicky střední hodnoty intervalu nejistoty). V modelech, kde některý z parametrů nemá žádnou standardní hodnotu (a může nabývat širšího spektra hodnot), využíváme globálních metod analýzy citlivosti. Výsledky analýzy napoví, které parametry je důležité kontrolovat (a znát tak co nejpřesněji jejich hodnoty). V tomto textu se budeme zabývat pouze analýzou lokální citlivosti, čtenáře se zájmem o informace k analýze globální citlivosti odkážeme například na [17]. Předpokládejme model popsaný rovnicí: dy(t, x) dt = f(y(t, x)), (4.1) kde y(t, x) je neznámý n-rozměrný vektor hledaných funkcí, t čas, x je m-rozměrný vektor parametrů modelu, f n-rozměrný vektor funkční závislosti mezi vstupem a výstupem modelu. Efekt změny parametrů je možné popsat Taylorovým rozvojem: y(t, x + x) = y(t, x) + m j=1 y(t, x) xj xj + m i=1 m j=1 2y(t, x) xixj xi xj + . (4.2) Parciální derivace y(t,x) xj se nazývají lokální citlivosti prvního řádu, výrazy 2y(t,x) xixj se nazývají lokální citlivosti druhého řádu atd. Ne vždy jsme schopni určit lokální citlivosti analyticky. Pro jejich výpočet proto existuje několik numerických metod, z nichž zmíníme metodu konečných diferencí. 76 Metoda konečných diferencí Nejjednodušší způsob výpočtu lokální citlivosti je založen na nahrazení derivace její apro- ximací: y(t, x) xj y(t, xj + xj) - y(t, xj) xj , j = 1, ..., m (4.3) Tato procedura bývá též označována jako metoda hrubé síly nebo nepřímá metoda. [16] 4.3 Neomezený růst populace živých organismů První model, který jsme vytvořili, představoval neomezený růst populace. Popisovala jej rovnice (3.5): N (t) = (a - b) N(t). s počáteční podmínkou N(0) = N0. (4.4) Obecné řešení rovnice je tvaru: N(t) = N0 e(a-b)t . (4.5) Pro zobrazení konkrétního řešení jsme uvažovali populaci zajíce polního, o němž jsme z dostupných zdrojů zjistili údaje o porodnosti a věku dožití. Získané informace v sobě přitom zahrnovali neurčitost: věk dožití: 10-12 let porodnost: 3-4 krát ročně 1-7 mláďat (tj. 3-28 mláďat ročně) Pro koeficienty porodnosti a úmrtnosti v případě ,,měsíčního kroku ve skutečnosti platí: a [0.125, 1.17], b [0.007, 0.0083]. 4.3.1 Analýza neurčitosti Parametr N0 jsme zvolili sami ,,náhodně , budeme tedy uvažovat, že jeho hodnota je přesná a do analýzy neurčitosti jej zahrnovat nebudeme. Vzhledem k povaze informací o parametrech se jeví jako nejvhodnější analýza intervalovou aritmetikou. 77 Intervalová aritmetika Práci s intervalovou aritmetikou v systému Maple umožňuje balík Tolerances. S jeho pomocí definujeme parametry a, b jako intervaly. Řešení N(t) pak bude ,,intervalová funkce, tj. funkce, jejíž funkční hodnotu pro libovolné t bude tvořit interval hodnot. Zápis intervalové funkce N(t) v Maple může být nepřehledný a matoucí. Při práci s balíkem Tolerances proto musíme být obezřetní, viz obrázek 4.1. Obrázek 4.1: Řešení neomezeného růstu populace s balíkem Tolerances. Intervalovou funkci N(t) nemůžeme vykreslit tak, jak ,,klasickou funkci. Přesto máme několik možností, jak ji zobrazit. Jednak můžeme funkci ,,rozdělit na více klasických funkcí (např. nejmenší, střední, největší, ...) a ty vykreslit do jednoho grafu, abychom znázornili průběh funkce pro nějaké významné hodnoty parametrů z jejich intervalů neurčitosti. Například obrázek 4.2 ilustruje funkci N(t) pro nejnižší a nejvyšší hodnotu rozdílu a - b (čárkované křivky) a střední hodnotu rozdílu a - b (plná křivka). Další možnost je vykreslit funkci trojrozměrně jako funkci dvou proměnných. První proměnnou bude čas t, druhou proměnnou bude parametr, jehož vliv na řešení chceme 78 Obrázek 4.2: Vykreslení jednotlivých řešení z intervalu neurčitosti. pozorovat. Na obrázku 4.3 je jako druhý parametr zvolen rozdíl a - b, který označíme r, jak jsme zavedli již dříve. Fuzzy teorie Fuzzy množiny jsou rozšířením klasických množin. Fuzzy množina modeluje přibližné neurčité hodnoty, které mohou být čísla i nominální hodnoty (např. ,,skoro zelený, mírně do modra ). Zatímco u klasických množin prvek do množiny buď patří, či nikoliv, u fuzzy množin může prvek náležet do množiny jen částečně. Klasickou množinu jednoznačně určuje její charakteristická funkce, která nabývá hodnot 0, nebo 1. Naproti tomu fuzzy množinu popisuje tzv. funkce příslušnosti nabývající libovolné hodnoty z uzavřeného intervalu [0, 1]. Pro počítání s fuzzy množinami představujícími číselné hodnoty existuje několik typů fuzzy aritmetiky, například fuzzy obdoba intervalové aritmetiky, kdy se inter- 79 Obrázek 4.3: Vykreslení řešení jako funkce dvou parametrů. valová aritmetika aplikuje na intervaly na hladinách = 0 a = 1. Tento typ aritmetiky využijeme i v našem případě. [6] Ve chvíli, kdy obdržíme o parametrech modelu nějakou další informaci, například: průměrné plození nových jedinců je nejběžnější, zatímco mezní případy (3, resp. 28, mláďat ročně) se téměř nevyskytují, můžeme koeficient porodnosti chápat jako fuzzy množinu. V tomto případě bychom mohli koeficientu porodnosti přiřadit fuzzy množinu, jejíž funkce příslušnosti má trojúhelníkový tvar s vrcholem v bodě průměrného plození. Podobnou úvahou (např. že věk dožití je nejčastěji 10-11 let, 12 let pouze výjimečně) bychom přiřadili koeficientu úmrtnosti fuzzy množinu, jejíž funkce příslušnosti má tvar pravoúhlého lichoběžníku (v němž není přítomná svislá úsečka, aby se jednalo o zobrazení). Zmíněné úvahy nyní provedeme. Práci s fuzzy množinami v systému Maple umožňuje toolbox FuzzySets. V našem případě vystačíme bez něj, přičemž funkce příslušnosti budeme definovat po částech pomocí příkazu piecewise. Na obrázku ?? tak definujeme 80 funkce příslušnosti pro fuzzy množiny koeficientu porodnosti a a koeficientu úmrtnosti b. Jelikož se ve skutečnosti jedná o fuzzy čísla, která potřebujeme odečíst (určit rozdíl a-b), musíme vytvořit funkci příslušnosti r pro fuzzy množinu rozdílu a - b. Na tomto místě využijeme intervalovou aritmetiku k určení bodů na hladinách = 0 a = 1, v nichž dochází ke změně směrnice funkce . Na hladině = 0 tak získáme body 0.125 - 0.0083 = 0.1167, 1.17 - 0.007 = 1.163, na hladině = 1 body 0.6475 - 0.0083 = 0.6392, 0.6475 - 0.0076 = 0.6399. Obrázek 4.4: Definice koeficientů porodnosti a úmrtnosti jako fuzzy množin. Díky analytickému předpisu (4.5) řešení modelu můžeme vytvořit také funkci příslušnosti pro fuzzy množinu funkce N(t). Tato funkce příslušnosti je časově závislá, přičemž má stále stejný lichoběžníkový tvar (pro různá t) a body, v nichž se mění směrnice funkce příslušnosti, vychází z bodů právě určených pro fuzzy množinu r: N0 e(0.125-0.0083)t , N0 e(0.6475-0.0083)t , N0 e(0.6475-0.0076)t , N0 e(1.17-0.007)t . 81 Obrázek 4.5: Řešení jako fuzzy množina. Na obrázku 4.5 je definována fuzzy množina N(t) jako funkce dvou proměnných. Pro časové body t = 1 a t = 5 je následně vykreslena. Velmi krátký interval na hladině = 1 způsobuje, že funkce příslušnosti má na pohled spíše trojúhelníkový tvar. Získaná fuzzy množina pro N(t) nám říká, jak může řešení ve zvoleném čase vypadat, tedy kolik jedinců populace v tomto čase může mít. Oproti intervalové aritmetice je každý údaj podpořen hodnotou příslušnosti, tedy mírou možnosti. Pravděpodobnostní analýza Při pravděpodobnostní analýze chápeme jednotlivé parametry modelu jako náhodné veličiny, kterým přiřadíme pravděpodobnostní rozložení hodnot, jichž mohou nabývat. V našem případě budeme postupovat podobně jako v případě užití fuzzy množin. Za náhodné veličiny budeme považovat koeficienty porodnosti a úmrtnosti. Koeficientu porodnosti přiřadíme trojúhelníkové rozložení hodnot na intervalu [0.125, 1.17] s maximem v bodě 0.6475, který odpovídá průměrnému plození. Pro koeficient úmrtnosti nemáme v 82 systému Maple k dispozici lichoběžníkové rozložení. Máme dvě možnosti, jak to vyřešit. Buď rozložení vytvoříme, přičemž jeho parametry určíme z toho, že integrál z hustoty rozložení (tj. obsah plochy mezi funkcí pravděpodobnostního rozložení a osou x) je roven 1. Nebo použijeme nějaké existující rozložení nejvíc ,,podobné tomu, které chceme. V našem případě bychom pro koeficient úmrtnosti zvolili například trojúhelníkové rozložení hodnot na intervalu [0.007, 0.0083] s maximem v bodě 0.0076, který odpovídá průměrné úmrtnosti. Obrázek 4.6: Pravděpodobnostní analýza neurčitostí. Druhým krokem pravděpodobnostní analýzy je stanovení propagace neurčitosti. To provádíme generováním ,,dostatečného množství (n) hodnot náhodných veličin a následným vyhodnocováním modelu. Získáme tak pravděpodobnostní rozložení hodnot řešení modelu. ,,Dostatečné n se pohybuje v řádech tisíců až milionů, jeho hodnota závisí na více faktorech. Při provádění pravděpodobnostní analýzy se zpravidla postupuje tak, že se zvolí n na základě zkušeností a možností (případně potřeb) a vygenerují se dvě skupiny 83 po n vygenerovaných hodnotách. Pokud se shodují základní statistické parametry (střední hodnota, rozptyl) obou skupin, je n považováno za dostatečné. Pokud se statistické parametry liší, je nutné zvýšit počet vygenerovaných hodnot. Obrázek 4.6 ilustruje provedení pravděpodobnostní analýzy v Maple. Nejprve vytvoříme náhodné veličiny koeficientů porodnosti a úmrtnosti (které označíme velkými písmeny). Pro oba koeficienty použijeme již implementované trojúhelníkové rozložení pravděpodobnosti. Příkazem Sample vygenerujeme 105 hodnot každé z náhodných veličin a 105krát pro ně vyhodnotíme řešení modelu v případě t = 1 a v případě t = 5. Příkazem Histogram zobrazíme histogram získaných řešení (parametrem averageshifted zvýšíme počet vykreslených sloupců). Z výsledků můžeme pozorovat, jak se v čase mění pravděpodobnostní rozložení hodnot řešení. V čase t = 1 můžeme ještě mluvit o přibližně trojúhelníkovém, v čase t = 5 se jedná již o log-normální rozložení. Na obrázku 4.7 je vidět vytvoření vlastního rozložení hodnot. Systém Maple s ním však neumí pracovat ve smyslu generování hodnot, což byl důvod pro použití již implementovaného trojúhelníkového rozložení. Obrázek 4.7: Problém při vytváření vlastního rozložení hodnot. 4.3.2 Analýza citlivosti Předcházející analýzou neurčitosti jsme kvantifikovali celkovou neurčitost v řešení modelu. Nyní zjistíme, jak je řešení citlivé na hodnoty jednotlivých parametrů. Jelikož máme analytický předpis řešení (4.5): 84 N(t) = N0 e(a-b)t , můžeme určit lokální citlivosti parametrů přímo z definice (4.2). Nás zajímá především velikost citlivosti, takže budeme lokální citlivosti chápat jako absolutní hodnoty z definovaných výrazů. Označme citlivosti písmenem s, index nechť značí parametr, jehož citlivost uvažujeme. Potom: sa = N(t, a, b, N0) a = N0 e(a-b)t a = N0 t e(a-b)t , sb = N(t, a, b, N0) b = N0 e(a-b)t b = N0 t e(a-b)t , sN0 = N(t, a, b, N0) N0 = N0 e(a-b)t N0 = e(a-b)t . Lokální citlivosti jsou časově závislé. Citlivosti koeficientů úmrtnosti a porodnosti jsou stejné, citlivost počáteční velikosti populace je pro t > 1 N0 nižší než citlivosti zbylých parametrů. Chování modelu tedy ovlivňují nejvíce koeficient porodnosti a koeficient úmrtnosti. 4.4 Omezený růst populace U dalších modelů provedeme pouze analýzu citlivosti, neboť k analýze neurčitosti již nemáme dostatečné údaje. 4.4.1 Analýza citlivosti V případě omezeného růstu populace jsme dospěli k řešení: N(t) = N0 (a - b) N0 c - (N0 c - a + b) e-(a-b)t . Pomocí systému Maple můžeme jednoduše získat citlivosti jako parciální derivace funkce N(t, a, b, c, N0) závislé na parametrech, výsledné výrazy však budou stěží interpretovatelné, jak můžeme vidět na obrázku 4.8. Vyhodnoťme proto citlivosti pro ,,průměrné nastavení parametrů, které jsme použili již dříve: a = 7 12, b = 1 1112, c = 1 1112, N0 = 100, a pro t = 10 (obrázek 4.9). Vidíme, že v tomto případě je nejcitlivější parametr c, tedy lineární člen koeficientu úmrtnosti. Počáteční velikost populace je opět nejméně citlivý parametr, což odpovídá chování modelu (neboť řešení se ustálí na stejné hodnotě pro libovolnou počáteční velikost populace). 85 Obrázek 4.8: Výpočet obceného předpisu pro citlivost koeficientu porodnosti v případě omezeného růstu populace. Obrázek 4.9: Výpočet citlivostí jednotlivých parametrů v případě omezeného růstu popu- lace. 86 4.5 Populace pod tlakem nespecializovaného predátora 4.5.1 Analýza citlivosti Poslední model, u nějž provedeme analýzu citlivosti, je model růstu populace pod tlakem nespecializovaného predátora. Při analýze neomezeného růstu populace jsme vystačili s obecným analytickým předpisem citlivostí, u omezeného růstu populace jsme pro vyvození závěrů museli určit citlivosti pro konkrétní numerické nastavení parametrů, nicméně stále jsme citlivosti počítali jako parciální derivace funkce řešení modelu. V tomto případě již nemáme analytický předpis řešení modelu, musíme proto počítat citlivosti numericky (přibližně), což provedeme metodou konečných diferencí. Jak velkou diferenci k výpočtu použít závisí na modelu a jeho parametrech. Obvykle se volí diference 1 % nebo 10 % z hodnoty příslušného parametru. Abychom zamezili vlivu velikosti absolutní hodnoty parametru, počítáme tzv. normalizovanou citlivost, tj. citlivost parametru na jednotku jeho velikosti. Definiční předpis pro citlivost modelu y(t, x) na parametr xi získá následnující tvar: sxi = y(t, x) xi y(t, xi + xi) - y(t, xi) xi xi y(t, xi) . (4.6) Může se stát, že přičtení určité diference k hodnotě parametru způsobí jinou (velikostní) změnu řešení modelu než odečtení stejné diference od hodnoty parametru. Zpravidla se proto určí změna způsobená přičtením diference (|y(t, xi + (xi)) - y(t, xi)|) i jejím odečtením (|y(t, xi - xi) - y(t, xi)|)a do vztahu pro citlivost se vezme průměr těchto hodnot. Získáme tedy: sxi |y(t, xi xi) - y(t, xi)| xi xi y(t, xi) . (4.7) Metodu konečných diferencí provedeme pro obě zmíněné diference (1 % a 10 %), příslušné citlivosti rozlišíme dalším indexem. V případě xi = 0.01xi index citlivosti budeme definovat předpisem sxi,1% = |y(t, xi + 1xi) - y(t, xi)| y(t, xi) 100, (4.8) neboť xi xi = 100. Analogicky pro xi = 0.1xi budeme index citlivosti definovat předpisem sxi,10% = |y(t, xi 10xi) - y(t, xi)| y(t, xi) 10. (4.9) Model růstu populace pod tlakem nespecializovaného predátora je popsán rovnicí: N (t) = r N(t) 1 - N(t) K - S Nkrit N(t) ... N(t) Nkrit, S ... N(t) > Nkrit. , N(0) = N0. 87 Nyní vypočítáme lokální citlivosti parametrů v případě, že S < 1 4 r K, Nkrit S r . K tomu využijeme stejné nastavení parametrů, jaké jsme zvolili při analýze řešení na obrázku 3.23: S = 200, r = 1, K = 1000, Nkrit = 400 Počáteční hodnoty zvolíme tři různé: N01 = 100, N02 = K 2 1 - 1 - 4 S r K . = 276, N03 = 700. Citlivosti přitom budeme počítat pro čas t = 15, v němž má sledovaná populace přibližně stabilizovanou velikost. Z prostorových důvodů ukazujeme pouze výpočet citlivosti parametru r (vnitřního koeficientu růstu populace) pro N(0) = N01 = 100 (obrázek 4.10). Při výpočtech citlivostí parametrů r, S a K musíme mít na paměti, že hodnota N02 je pomocí nich definována, tj. při změně kteréhokoli ze zmíněných parametrů musíme určit též odpovídající hodnotu N02. Pro výpočet řešení modelu použijeme příkaz dsolve s parametrem numeric pro numerické řešení. Výsledek pro čas t zadaný do kulatých závorek získáme ve tvaru [t = ..., N(t) = ...], v němž jsou místo teček numerické hodnoty. Jestliže z něj chceme získat pouze numerickou hodnotu funkce N(t), musíme specifikovat do hranatých závorek, že chceme druhý údaj. Příkazem rhs z něj pak vezmeme pravou stranu, tj. požadovanou numerickou hodnotu. Seznam vypočtených hodnot citlivosti pro jednotlivé parametry za různých počátečních podmínek nabízí tabulka 4.1. Ve druhém sloupci tabulky najdeme hodnoty sxi,1%, ve třetím sxi,10%. Vidíme, že mezi nimi není významný rozdíl až na citlivost počáteční podmínky v bodě N02. Počáteční velikost populace N02 je specifická a velmi citlivá. Pro N(0) = N02 totiž velikost populace zůstává konstantní, ale pro sebemenší změnu N(0) populace buď vymře, nebo se její velikost ustálí na jiné (vyšší) hodnotě. Z hodnot lokálních citlivostí zjistíme, které parametry jsou nejcitlivější, a jejichž hodnoty tak potřebujeme znát co nejpřesněji. Současně však musíme mít na paměti závislost lokální citlivosti na daném nastavení (všech) parametrů, kterou můžeme pozorovat i v tabulce 4.1 . 88 Obrázek 4.10: Výpočet citlivosti parametru r, vnitřního koeficientu růstu, v modelu růstu populace pod tlakem nespecializovaného predátora pro N(0) = N01. Tabulka 4.1: Lokální citlivosti parametrů modelu růstu populace pod tlakem nespecializovaného predátora. Parametr, počáteční podmínka = 1% = 10% Vnitřní koeficient růstu (r), N(0) = N01 14.15 18.76 Vnitřní koeficient růstu (r), N(0) = N02 1.62 1.71 Vnitřní koeficient růstu (r), N(0) = N03 0.62 0.65 Hladina nasycení (S), N(0) = N01 19.22 31.79 Hladina nasycení (S), N(0) = N02 1.62 1.65 Hladina nasycení (S), N(0) = N03 0.62 0.63 Úživnost prostředí (K), N(0) = N01 0.23 0.23 Úživnost prostředí (K), N(0) = N02 0.23 0.23 Úživnost prostředí (K), N(0) = N03 1.62 1.64 Kritická velikost (Nkrit), N(0) = N01 19.19 26.96 Kritická velikost (Nkrit), N(0) = N02 0.00 0.00 Kritická velikost (Nkrit), N(0) = N03 0.00 0.00 Počáteční velikost (N(0)), N(0) = N01 0.77 0.77 Počáteční velikost (N(0)), N(0) = N02 115.75 12.91 Počáteční velikost (N(0)), N(0) = N03 0.00 0.00 89 90 Kapitola 5 Maple 5.1 Úvod Systém Maple je výkonný program vhodný k řešení komplexních matematických problémů. Patří do skupiny systémů počítačové algebry, umožňuje symbolické i numerické výpočty a slouží především k vytvoření speciálních dokumentů, prezentací, interaktivních výpočetních modulů v prostředí Maple. Systém Maple též obsahuje komponenty podporující výuku matematiky. Výrobcem systému Maple je kanadská společnost Maplesoft Inc., jejíž webové stránky1 poskytují široké informace o systému a jeho dalších příbuzných programech jako je MapleSim, MapleNet, Maple T.A. a mnoho dalších nástrojů a programů. Webové stránky mimo jiné obsahují tzv. Aplikační centrum (Application Center), z nějž si může každý zaregistrovaný uživatel stáhnout ukázkové programy demonstrující použití systému Maple při řešení mnoha různých matematických i technických problémů. Poskytují i tzv. Studentské centrum (Student Center), kde si zaregistrovaný student může stáhnout mnoho studijních materiálů. Dalšími významnými zdroji informací o Maple jsou diskuzní fórum uživatelů Maple2 a web distributora Maple pro Českou a Slovenskou republiku3, kde je většina dokumentů v českém jazyce. V následujícím textu se budeme zabývat dosud poslední verzí Maple 13. Se systémem je možné pracovat několika různými způsoby, které volíme při spuštění programu Maple 13 ze startovacího menu počítače nebo kliknutím na příslušnou ikonu na ploše. 5.1.1 Standardní zápisník (Standard Worksheet) Grafické uživatelské rozhraní Maple zvané Standard Worksheet se spustí ze startovacího menu počítače výběrem položky Programy > Maple 13 > Maple 13 nebo kliknutím na ikonu Maple 13 na ploše. Toto prostředí poskytuje veškeré možnosti systému Maple a pomáhá vytvářet elektronické dokumenty (zápisníky) zobrazující matematické výpočty, matematické texty a komentáře spolu s propracovanou počítačovou grafikou. Některé výpočty je možné v zápisníku ,,schovat a nechat ,,odkryté jen nejdůležitější pasáže tak, 1 http://www.maplesoft.com 2 http://www.mapleprimes.com 3 http://www.maplesoft.cz 91 Obrázek 5.1: Maple 13: Prostředí Standard Worksheet aby dokument poskytoval uživateli potřebné informace. Jelikož vytvořené dokumenty jsou interaktivní, tj. v jistém smyslu ,,živé , může si uživatel sám upravovat předdefinované hodnoty parametrů, vyhodnocovat příkazy, a získávat tak nové výsledky. Menu zápisníku Maple má tři vodorovné lišty: hlavní menu (zcela nahoře), nástrojovou lištu (pod hlavním menu) a kontextovou lištu (pod nástrojovou lištou), dále palety (svislý blok na levé straně4) a vlastní pracovní pole ­ dokument, do nějž zadáváme příkazy, texty, provádímme výpočtové a grafické akce. Vlastní pracovní pole je možné zobrazit přes celou obrazovku skrytím palet, nástrojové lišty a kontextové lišty (kliknutím na příslušné položky v záložce View hlavního menu). 5.1.2 Klasický zápisník (Classic Worksheet) Classic Worksheet se spustí ze startovacího menu počítače výběrem položky Programy > Maple 13 > Classic Worksheet Maple 13 nebo kliknutím na ikonu Classic Worksheet na ploše. Tento zápisník Maple je určen především pro méně výkonné počítače s omezenou pamětí. Neposkytuje také všechny funkce, příkazy a možnosti systému Maple jako Standard Worksheet. Před verzí Maple 10 byl tento typ zápisníku jediný možný. 5.1.3 Příkazový řadek a kalkulačka Maple Se systémem Maple můžeme pracovat i pouze v režimu tzv. příkazového řádku, který se spouští ze startovacího menu počítače výběrem položky Programy > Maple 13 > Command-line Maple 13 a je určen k řešení rozsáhlých a složitých úloh. K dispozici nejsou žádné grafické prvky. 4 Palety se automaticky zobrazují v levém bloku. Prostředí systému nabízí blok pro palety i po pravé straně obrazovky (automaticky zavřený), kam je možné některé (ale i všechny) přesunout. 92 Obrázek 5.2: Maple 13: Prostředí Classic Worksheet Dále je možné používat (a vytvářet) tzv. maplety, tj. grafická uživatelská rozhraní obsahující okénka, textová pole a další vizuální prvky umožňující pouhým klikáním spouštět výpočty. Kalkulačka systému Maple je speciální typ mapletu, který je k dispozici pouze pro operační systémy Windows. Spouští se ze startovacího menu počítače, kde se vybere (Programy > Maple 13 > Maple Calculator). 5.1.4 Document Mode, Worksheet Mode Ve zbývající části kapitoly budeme uvažovat rozšířené prostředí Standard Worksheet. V tomto prostředí je možné pracovat ve dvou základních režimech: Worksheet Mode a Document Mode. Prvně jmenovaný odpovídá prostředí Classic Worksheet, v němž je každý příkaz Maple uvozen symbolem [> a musí být ukončen dvojtečkou (výsledek se nezobrazí) nebo středníkem (výsledek se zobrazí na dalším řádku uprostřed). Otevírá se v základním menu jako New, kde se vybere Worksheet mode. Druhý jmenovaný režim poskytuje přehlednější zápis příkazů a matematických vzorců bez ,,přebytečných symbolů. Při otevření nového souboru v základním menu New je automaticky spuštěn právě tento režim Document mode. K příkazům máme možnost zapisovat komentáře, a to uvedením symbolu mřížky (#) před text, který má být komentářem (viz obrázek 5.4). Obvykle je zápisník nastaven do jednoho režimu, který je možné zvolit při otevírání nového souboru v hlavním menu (File > New > Worksheet mode nebo File > New > Document Mode). Existuje však i možnost přepínat mezi režimy v rámci jednoho zápisníku, kdy je část vytvořena v jednom režimu, část v jiném. Z Document Mode se přepneme do Worksheet Mode kliknutím na ikonku [> v nástrojové liště (pod hlavním menu). Naopak z Worksheet Mode se do režimu Document Mode přepneme výběrem položky v hlavním menu (Format > Create Document block). 93 Obrázek 5.3: Režimy zápisu. Obrázek 5.4: Zápis komentáře v příkazovém režimu 5.1.5 Math Mode, Text Mode Pro rozlišení příkazů a obyčejného textu v režimu Document Mode slouží kontextová lišta zápisníku, kde máme na výběr Text Mode a Math Mode. Math Mode odpovídá příkazům (po stisku klávesy Enter dojde k jeho vyhodnocení), v Text Mode píšeme texty dokumentu podobně jako např. v textovém editoru Word (po stisku klávesy Enter přejdeme na nový řádek bez jakéhokoli vyhodnocení). Volit režim zápisu můžeme buď kliknutím myši (v kontextové liště nad dokumentem jsou uvedeny názvy představující jednotlivé možnosti) nebo výběrem položky v hlavním menu (Edit > Switch to Text/Math Mode). Totéž lze rychleji provést jedinou klávesou F5. V režimu Worksheet Mode lze pro text i pro příkazy použít oba druhy zápisu. Pro psaní textu je nutné kliknout na ikonku T v nástrojové liště nebo zvolit položku v hlavním menu (Insert > Text). Podobně pro zápis příkazů jazyka Maple je nutné kliknout na ikonku [> v nástrojové liště nebo zvolit položku v hlavním menu (Insert > Maple Input). Při otevření nového souboru je zápisník automaticky nastaven na psaní příkazů. 94 5.2 Základní ovládání systému V této části si ukážeme, jak systému Maple zadávat jednoduché příkazy. Budeme proto předpokládat, že zápisník je již nastaven pro psaní příkazů (Math Mode). Základní operace: pro sčítání používáme symbol plus (+), pro odčítání mínus (­), pro násobení (*), ale pozor, pro dělení musíme používat pouze lomítko (/), dvojtečka (:) má jiný význam (viz dále). Zadání zlomku: zadáme čitatel, lomítko (/) a jmenovatel. Pro opuštění zápisu jmenovatele stačí stisknout šipku doprava (ve zlomku je též možno pohybovat se šipkami). Zadání mocniny: zadáme základ, symbol stříška (^) a exponent. Pro opuštění zápisu exponentu je opět možné použít šipku doprava. 5.2.1 Vyhodnocení příkazů Příkaz vyhodnotíme stiskem klávesy Enter. Výsledek se zobrazí na dalším řádku uprostřed. V dřívějších verzích (méně než 10) systému Maple bylo nutné příkaz ukončovat středníkem, aby se provedl. Tato možnost nadále zůstala (tj. zadáme-li za příkaz středník, ,,nic nepokazíme ) a v některých situacích je dokonce jediná možná ­ např. textový režim (Text Mode) příkazů v Worksheet Mode nebo při psaní příkazů v prostředí Classic Worksheet. Z předešlých verzí Maple se uchovala i funkcionalita symbolu dvojtečka (:), která po zařazení za příkaz a následného stisku klávesy Enter potlačí zobrazení výsledku na dalším řádku (tj. příkaz se provede, ale na obrazovku se nic nevypíše). Proto není možné dvojtečku používat jako operátor dělení. V Document Mode je navíc možné zapisovat příkaz i s výsledkem na jeden řádek. Po napsání příkazu k tomu stačí namísto stisku klávesy Enter použít klávesovou zkratku ,,Ctrl + = . Jak bylo zmíněno dříve, interaktivní dokumenty v Maple jsou ,,živé . Tím máme na mysli skutečnost, že i v již dříve vytvořeném programu s vyhodnocenými příkazy otevřeném po libovolně dlouhé době můžeme kterýkoli výraz upravit, znovu vyhodnotit (stisknout Enter nebo ,,Ctrl + = ) a dostaneme nový (správný) výsledek. Označíme-li myší několik (libovolně mnoho) příkazů a stiskneme ikonku ! (vykřičník) z nástrojové lišty, všechny označené příkazy budou postupně vyhodnoceny. K vyhodnocení všech příkazů v dokumentu slouží ikonka !!! (tři vykřičníky). Maple obsahuje více než tisíc symbolů, pomocí nichž můžeme tvořit matematické výrazy. Patří mezi ně písmena anglické abecedy a číslice, pomocí nichž můžeme vytvářet jména (posloupnost znaků začínající písmenem, za kterým může následovat kombinace písmen, čísel a vybraných symbolů), reálná čísla (celá, racionální, s desetinou tečkou nebo v notaci pohyblivé řádové čárky), komplexní čísla (sestávající se z reálné a imaginární části), aritmetické, booleovské a jiné operátory (+, ­, !, /, *, , lim, . . . ), konstanty (, e, . . . ), imaginární jednotka, nekonečno, matematické funkce (cos(x), sin( 3 ), . . . ) a proměnné (pojmenované jménem . . . ). Velkou předností systému Maple je jeho schopnost symbolických matematických výpočtů (tj. práce s výrazy). Některé z matematických symbolů, které můžeme použít, nejsou na klávesnici, a tak se zadávají buď z palety nebo 95 pomocí svých názvů. 5.2.2 Palety Obrázek 5.5: Palety Palety jsou pojmenované ,,obdélníčky s nabídkou předdefinovaných symbolů, zápisů, výrazů apod. (obrázek 5.5) standardně při levém okraji zápisníku. Každá paleta obsahuje symboly příslušné skupiny. Například paleta s názvem Expression nabízí některé základní matematické výrazy, paleta Greek písmena řecké abecedy atd. Standardně zůstává několik palet nezobrazených. V hlavním menu (View > Palettes) můžeme seznam zobrazených palet upravit tím, že některé přidáme, odebereme, ale třeba i jinak seřadíme. Totéž lze provést jen za pomoci myši. Přidržením levého tlačítka vybranou paletu přesuneme na jiné místo, stisknutím pravého tlačítka vyvoláme stejnou nabídku, jako bychom postupovali přes hlavní menu. Kliknutí levého tlačítka myši na některou z palet zobrazí (příp. skryje) symboly, které paleta nabízí. Vložit z palety symbol do zápisníku pak stačí pouhým kliknutím, případně ,,přetáhnutím s pomocí levého tlačítka myši. Obecné barevně zvýrazněné symboly ve výrazu je možné dále specifikovat (upravovat) dosazením hodnoty, s níž potřebujeme pracovat. Nyní ukážeme, jak vložit například výraz 10 i=1 2i. Pro jeho zapsání potřebujeme celkem dva různé symboly: sumu a mocninu. Sumační symbol nalezneme v paletě Expression. Kliknutím na tuto paletu ji otevřeme (na obrázku 5.5 je jako jediná otevřená) a vybereme z ní přítomný sumační symbol. Po jeho vložení do zápisníku pak jednoduše přepíšeme obecné symboly (k, n a f) požadovanými hodnotami. Pohybovat ve vzorci se můžeme pomocí šipek na klávesnici, s výhodou lze využít klávesy Tab, přitom k úpravě výrazu můžeme používat i všechny ostatní klávesy jako např. Delete, Backspace, mezerník, ... Znak f přepíšeme mocninným výrazem. To můžeme provést buď vložením dalšího symbolu z palety Expression (symbol ab) a následnou úpravou (specifikací hodnot a, b), nebo užitím již známé klávesy pro tvorbu mocnin ­ stříšky (^). 5.2.3 Názvy symbolů Mimo palet můžeme k zápisu symbolů užívat jejich názvů. Například symbol vložíme zapsáním jeho názvu Pi5, pro odmocninu je vyhrazen název sqrt, takže x vložíme napsáním sqrt(x). Při vkládání symbolů pomocí názvů nebo při 5 Maple rozlišuje malá a velká písmena. Například zápis Pi představuje Ludolfovo číslo i s jeho hodnotou, zatímco zápis pi představuje pouze symbol (řecké písmeno) . 96 tvorbě příkazů může přijít vhod funkce ,,dokončování . Ta se vyvolá stisknutím klávesy Esc, nebo kláves ,,Ctrl + mezerník . Pro zadání symbolu pak stačí napsat jeho úvodní písmeno (písmena) a pomocí klávesové zkratky následně z vyskakovacího okénka zvolit požadovanou hodnotu. Na obrázku 5.6 je ukázka nabídky pro dokončení zápisu písmen so. Obrázek 5.6: Funkce automatického dokončování. 5.3 Nápověda Nápověda je významnou součástí systému Maple a pomáhá jeho uživateli velmi rychle pochopit a využívat prostředí Maple. K dispozici je několik různých typů nápovědy. 5.3.1 Maple Help Vyvoláním Maple Help se zobrazí základní stránky nápovědy se všemi dostupnými informacemi. Je v nich možné jednak vyhledávat požadované téma, ale také procházet jednotlivá témata jako v manuálu. Na obrázku 5.7 je okno nápovědy otevřené na informacích k příkazu discont. 5.3.2 Tour of Maple, Quick Reference, Quick Help Položka Take a Tour of Maple poskytuje interaktivní přehled systému (jeho nejdůležitějších prvků). Kliknutím na Quick Reference zobrazíme tabulku informací o ovládání systému Maple, zejména pro nové uživatele. Jedná se o základní informace s odkazy do nápovědy Maple Help pro jejich případné doplnění. Položka Quick Help nabízí ještě stručnější tabulku než předchozí nápověda. Standardně se objevuje v každém novém zápisníku při pravé straně v podobě černého okénka (pokud toto nastavení nezrušíme). Po zavření je možné ji vyvolat stiskem klávesy F1, či jako položku v hlavním menu. 97 Obrázek 5.7: Hlavní nápověda systému Maple. 5.3.3 What's New, Startup Dialog K dispozici je též přehled rozšíření stávající verze Maple oproti předcházející verzi. Dosupné přes Help > What's New. Nápověda Startup Dialog obsahuje tipy pro práci se systémem Maple. Zobrazuje se vždy po spuštění systému (pokud toto nastavení nezru- šíme). 5.3.4 Manuals, Resources, and more Vyvoláním Manuals, Resources, and more přejdeme do další oblasti nápovědy, z níž popíšeme tři nejdůležitější části. Maple Portal Od nejnovější verze (tedy Maple 13) je k dispozici tzv. Maple Portal. Spustit jej můžeme samostatně (Maple Portal má vlastní ikonu na ploše) nebo přes nápovědu v hlavním menu (Help > Manuals, Resources, and more > Maple Portal). Maple Portal slouží jako pomocník všem novým (a nejen těm) uživatelům systému Maple. Je v něm možné rychle najít detailní popis práce se systémem Maple od řešení nejjednodušších problémů až po velmi složité úlohy. Applications and Examples Z nápovědy je možno vyvolat i spustitelné soubory (tj. již vytvořené programy) demonstrující možnosti systému Maple. Vyvoláme je přes nápovědu v hlavním menu (Help > Manuals, Resources, and more > Applications and Examples) a pak kliknutim na zvolený příklad. 98 Obrázek 5.8: Maple Portal. Manuals Z nápovědy je možno vyvolat i anglické manuály User manual, Introductory Programming Guide, Advanced Programming Guide a Getting Started with Maple Toolboxes podrobně popisující možnosti systému Maple. Vyvoláme je přes nápovědu v hlavním menu (Help > Manuals, Resources, and more > Manuals) a pak kliknutim na zvolený manuál. 5.3.5 Pomocníci, instruktoři a řešené úlohy Systém Maple poskytuje také již připravené ,,pomocné nástroje pro řešení úloh. Jsou to tzv. Pomocníci (Assistants), Instruktoři (Tutors) a Úlohy (Tasks), které vyvoláme z hlavního menu (Tools > Assistants nebo Tools > Tutors anebo Tools > Tasks). Pomocníci (Assistants) mají např. nástroje pro hledání funkční závislosti v datech, optimalizaci funkcí, řešení diferenciálních rovnic a další. Pro daný typ úlohy mají implementováno několik často používaných algoritmů. Po vyvolání provedou uživatele nastavením a specifikací parametrů úlohy a zvolenou metodou úlohu vyřeší. Instruktoři (Tutors) provedou uživatele řešenou problematikou pomocí jednoduchých názorných příkladů. Úlohy (Tasks) zobrazují na příkladech, jak řešit různé úlohy. Zobrazí se vyvoláním z menu (Tools > Tasks > Browse). 5.4 Provádění výpočtů Maple provádí přesně numerické výpočty s celými, racionálními i iracionálními čísly. Každý zadaný matematický výraz se snaží co nejvíce zjednodušit (např. zlomek zkrátit a převést na základní tvar, upravit algebraický výraz, . . . ), ale ne za cenu ztráty přesnosti. To znamená, že například racionální čísla (zlomky) udržuje stále v jejich základním tvaru. 99 Podobně s konstantami , e a dalšími, s odmocninami a jinými výrazy pracuje jako se symboly. Tímto je zaručena absolutní přesnost numerických výpočtů i v případě, kdy nepracujeme pouze s celými čísly. Jsou však situace, kdy potřebujeme znát přibližnou hodnotu reálného nebo racionálního čísla v pohyblivé řádové čárce. K tomu slouží příkaz evalf, jenž vrátí zaokrouhlenou hodnotu svého argumentu na počet platných cifer mantisy specifikovaný systémovou proměnnou Digits. Ta je standardně nastavena na hodnotu 10. Všechny výpočty, při nichž je nutné zaokrouhlovat čísla, provádí proto Maple s přesností na 10 platných míst. Proměnnou Digits můžeme nastavit na takřka libovolné přirozené číslo. Omezení, jak vysoké toto číslo může být, zjistíme příkazem kernelopts(maxdigits). Pro představu uveďme, že pro Maple 13 je toto číslo 268 435 448, tedy více než 268 milionů platných cifer, s kterými dokáže systém počítat. Aniž bychom měnili nastavení proměnné Digits, můžeme zobrazit libovolný výraz s požadovanou přesností pouze pomocí příkazu evalf. Příkaz je možné použít s jedním nebo dvěma parametry. Jediný zadaný parametr znamená, že tento zadaný výraz bude vyhodnocen na počet platných míst specifikovaných v proměnné Digits. Přidaný druhý parametr řekne funkci evalf, na kolik platných míst má výraz vyhodnotit, viz příklady na obrázku 5.17. Obrázek 5.9: Příkaz evalf. S dříve zmíněnou nápovědou souvisí symbol ? (otazník). Otazník spolu s názvem příkazu otevře nápovědu na stránce týkající se zadaného příkazu. Tedy např. příkaz ?evalf otevře hlavní nápovědu systému na stránce popisující syntaxi a sémantiku příkazu evalf spolu s příklady jeho použití. Zapsáním dvou otazníků na začátek příkazu otevřeme tutéž stránku nápovědy ve ,,sbaleném tvaru osnovy, v níž je možné otevřít (odkrýt) libovolné části. Nakonec je tu ještě možnost zadání tří otazníků před příkaz, což otevře nápovědu na příkladech použití tohoto příkazu. Maple rozeznává přesná čísla (mezi něž patří i zmíněné symboly a e, zlomky atp.) a čísla typu Floating-Point, nebo-li čísla v pohyblivé řádové čárce. Jestliže systému zadáme výraz, v němž některý z jeho podvýrazů bude typu Floating-Point, může Maple na celý výraz pohlížet jako by byl tohoto typu a bude výsledky výpočtů zaokrouhlovat. To nejlépe uvidíme na dalších příkladech na obrázku 5.10. 100 Obrázek 5.10: Přesná čísla a čísla typu Floating-Point. Obrázek 5.11: Provedení výpočtu pomocí kontextové nabídky. 5.4.1 Příkazy Pro provedení výpočtu máme zpravidla více možností. Tou základní, která je k dispozici ve všech verzích systému, jsou příkazy jazyka Maple. Chceme-li například vypočítat odmocninu z čísla 2.5, zapíšeme v systému Maple příkaz sqrt(2.5). Stejného výsledku dosáhneme použitím symbolu pro odmocninu z palety Expression. Pokud chceme určit nejmenší společný násobek čísel 10, 12 a 15, můžeme využít příkazu lcm, nebo zapsat čísla na řádek za sebe (oddělená čárkami) a přes pravé tlačítko myši zvolit z kontextové nabídky Apply Function > Least Common Multiple, viz obrázky 5.11, 5.12. 5.4.2 Označení výsledků Každému zobrazenému výsledku se v zápisníku přiřazuje číselné označení, které se zapisuje zcela vpravo na řádek s odpovídajícím výsledkem. Označení je možné potlačit (tj. 101 Obrázek 5.12: Různé možnosti v provedení výpočtu. nezobrazovat), znovu vyvolat, případně upravit jeho formát v hlavním menu (Format > Labels > ...). Díky označení se můžeme na předešlé výsledky odvolávat a používat je při tvorbě dalších příkazů. V ukázkách vytvořených dokumentů (prezentovaných v tomto textu) je označení výsledků vždy potlačeno. Použití označení ilustruje obrázek 5.13. Pokud chceme například přičíst číslo 10 k výsledku s označením (2), pak napíšeme ,,10 + a přes klávesovou zkratku ,,Ctrl + L vložíme požadované označení (tedy do ,,vyskakujícího okénka zadáme číslo 2 a potvrdíme (OK)). Místo klávesové zkratky ,,Ctrl + L je možné použít horní menu (Insert > Label. . . ). Upozorněme, že zápis (2) vytvořený (pouze) na klávesnici při tvorbě příkazu Maple nepochopí, pro vložení označení do příkazu je třeba důsledně používat předešlý postup s ,,vyskakujícím okénkem zobrazeným na obrázku 5.14. Obrázek 5.13: Označení výsledků. Obrázek 5.14: ,,Vyskakující okénko pro zadání označení. 102 Maple dále nabízí možnost odkazovat se na poslední tři výsledky (v tomto případě je jedno, zda byly zobrazeny či nikoliv, a zda mají nějaké označení) pomocí symbolu % (procento). Jedno procento (%) představuje poslední výsledek, dvě procenta (%%) předposlední a tři procenta (%%%) před-předposlední. Obrázek 5.15: Využití procent při odkazování se na předchozí výsledky. Obrázek 5.16: Přiřazení hodnot do proměnných a odstranění uložené hodnoty. 5.4.3 Přiřazení hodnot do proměnných Odkazovat se na výrazy můžeme také po jejich přiřazení k nějaké proměnné. Operátorem přiřazení je (dvoj)symbol := (dvojtečka + rovnítko). 103 Namísto (dvoj)symbolu := můžeme k přiřazení použít příkaz assign. Tak, jak můžeme výrazy do proměnných přiřazovat, můžeme též přiřazení zrušit (tj. odebrat proměnné uloženou hodnotu). Zmíněné provedeme příkazem unassign nebo přiřazením názvu proměnné v apostrofech (obrázek 5.16). Přiřazovat hodnoty můžeme i do tzv. systémových proměnných. Již jsme se setkali s proměnnou Digits, která vyjadřuje počet platných míst, s nimiž Maple počítá. Ilustraci na obrázku 5.17 můžeme srovnat s obrázkem 5.9. Obrázek 5.17: Proměnná Digits a příkaz evalf. Odstranit uloženou hodnotu v systémové proměnné nelze. Do systémových proměnných můžeme hodnoty pouze přiřazovat, nebo současně vrátit příkazem restart nastavení všech systémových proměnných na jejich původní hodnoty. Provedení příkazu odstraní všechny uložené hodnoty v paměti (tedy i námi definované proměnné, načtené balíky atd.). Příkaz restart se proto používá zpravidla na počátku řešení nové úlohy, zejména pak na začátku každé práce se zápisníkem (aby se předešlo tomu, že budeme používat proměnnou, v níž je z dřívějška uložena pro nás nesprávná hodnota). 5.4.4 Řešení rovnic Pro řešení rovnic má systém Maple příkaz solve a několik příkazů k němu příbuzných závislých na typech rovnic, viz tabulka 5.1. Pomocí interaktivního prostředí Standard Worksheet můžeme řešit rovnice též pomocí kontextové nabídky. Zapíšeme rovnici a pravým tlačítkem myši zvolíme požadovaný příkaz. Obrázek 5.18 ilustruje některé příklady řešení rovnic. Příkazy pro řešení rovnic nemusí vždy zobrazit všechna řešení. Pokud je chceme zobrazit, přidáme příkazu solve nepovinný parametr AllSolutions, viz obrázek 5.19. 104 Tabulka 5.1: Příkazy pro řešení rovnic Typ rovnice Příkaz pro řešení Rovnice a nerovnice solve, fsolve Obyčejné diferenciální rovnice dsolve Parciální diferenciální rovnice pdsolve Rovnice v oboru celých čísel isolve Rovnice v oboru celých čísel v konečném tělese msolve Lineární integrální rovnice intsolve Systémy lineárních rovnic LinearAlgebra[LinearSolve] Rekurentní rovnice rsolve Obrázek 5.18: Ukázka řešení různých druhů rovnic použitím jednak příkazu, jednak kontextové nabídky. Symbol Z2 na obrázku 5.19 představuje libovolnou celočíselnou proměnnou. Že jde o celočíselnou proměnnou poznáme podle toho, že se v symbolu vyskytuje písmeno Z. Podobně by výskyt například písmena C značil proměnnou komplexní. Cifra 2 v symbolu proměnné označuje pořadí, v jakém byla proměnná v zápisníku zavedena. A nakonec znak vyjadřuje, že proměnná splňuje nějaký předpoklad. Jaké předpoklady proměnná splňuje 105 přitom zjistíme příkazem about, případně zápisem proměnné a po kliknutí pravým tlačítkem myši zvolením What Assumptions z kontextové nabídky. V zobrazeném příkladu na obrázku 5.19 je předpoklad celočíselnosti proměnné přebytečný. Obrázek 5.19: Zobrazení všech řešení rovnice. Obrázek 5.20: Tvar zobrazení řešení rovnice. Dále může příkaz solve zobrazit výsledek se strukturou RootOf vyjadřující kořen (tj. řešení) rovnice v nevyhodnoceném tvaru. Řešení pak vyhodnotíme buď příkazem allvalues (pro symbolické vyjádření), nebo příkazem evalf (pro numerické vyjádření) ­ obrázek 5.20. Vedle příkazů můžeme též využít pravého tlačítka myši, zvolit z kontextové nabídky položku All Values (pro symbolické vyjádření) a získaný výsledek převést na numerickou hodnotu zvolením Approximate > 10 (pro 10 platných míst) z kontextové nabídky. Symboly Z ve struktuře RootOf nyní nepředstavují celočíselnou proměnnou (neboť za písmenem Z nenásleduje číslo), nýbrž proměnnou libovolnou (tj. i komplexní). Struktura RootOf z obrázku 5.20 tedy zastupuje kořen rovnice z4 - 2 z3 + 2 = 0. Systém Maple po zadání příkazu vypíše zpravidla pouze řešení, případně chybová hlášení či varování. U příkazu solve (a nejen u něj) toto chování způsobuje ,,prázdný výpis 106 Obrázek 5.21: Proměnná infolevel a ,,prázdný výpis příkazu solve. Obrázek 5.22: Proměnná infolevel a příkaz solve. v případě, že Maple žádné řešení nenašel. Pro výpis podrobnějších informací o průběhu vyhodnocení příkazu a výsledcích slouží proměnná infolevel. Můžeme ji nastavit buď pro každý příkaz samostatně, přičemž do hranatých závorek za proměnnou vložíme název příslušného příkazu, nebo ji nastavíme všem příkazům současně na stejnou hodnotu uvedením slova all do hranatých závorek. Proměnná může nabývat hodnot 1, 2, ..., 5. Čím vyšší hodnota je přiřazena v proměnné infolevel, tím více informací o vyhodnocení příkazu obdržíme. Standardně není proměnná nastavena na žádnou hodnotu, což v podstatě odpovídá nastavení proměnné na hodnotu 0. Použití proměnné infolevel dokumentují obrázky 5.21 a 5.22. 107 5.4.5 Balíky Knihovna příkazů jazyka Maple je rozdělena na hlavní knihovnu a tzv. balíky. Příkazy, s nimiž jsme se doposud setkali, patří do hlavní knihovny, a můžeme je tak používat ihned po spuštění systému. Naproti tomu většina příkazů naleží do balíků, které musíme před použitím příslušného příkazu buď načíst do dokumentu pomocí příkazu with, nebo zadat příkaz spolu s názvem balíku. Načtení balíku pomocí příkazu with umožní používání všech příkazů z příslušného balíku. Naopak zadání příkazu spolu s názvem balíku je nutné provádět při každém použití jakéhokoli příkazu v případě, že balík nenačteme (příkazem with). Budeme (v případě potřeby) vždy načítat celý balík příkazů6. Například příkazy pro práci s vektory a maticemi náleží do balíku LinearAlgebra. Jestliže chceme tedy použít příkaz Eigenvalues pro nalezení vlastních čísel matice, načteme nejprve balík LinearAlgebra, jak dokumentuje obrázek 5.23. Obrázek 5.23: Použití balíků. Jednotky Práci s jednotkami umožňuje balík Units. Při výpočtech tak nemusíme pracovat jen s čísly, ale můžeme jim přiřazovat i jednotky. K vložení jednotek do zápisníku využijeme palety Units. Obrázek 5.24 ilustruje použití jednotek při výpočtu gravitační síly působící v tíhovém poli Země (tj. gravitační zrychlení je rovno přibližně 9.81 ms-2) na těleso o hmotnosti 10 kg. Vidíme, že Maple umí jednotky také zjednodušovat (resp. upravovat na jiný tvar). Ke zjednodušení výrazů přitom slouží příkaz simplify (viz dále). Maple rozpoznává jednotky různých soustav a velikostí, s nimiž umí pracovat a vzájemně je převádět. K převodu jednotek je k dispozici speciální nástroj zvaný Units Calculator. Spustit jej můžeme z hlavního menu přes Tools > Assistants > Units Calculator..., ukázku poskytuje obrázek 5.25. Pokud chceme použít jednotku, která není v paletě Units, můžeme si ji vytvořit sami tak, že přidáme jednotku s názvem unit a název přepíšeme. V systému Maple 13 je implementováno celkem 568 jednotek (tzn. v paletě Units je pouze několik vybraných). 6 Kromě pojmu balík se v češtině používá také termín knihovna. 108 Obrázek 5.24: Použití jednotek. Vědecké konstanty Balík ScientificConstants poskytuje hodnoty fyzikálních konstant a chemických vlastností látek spolu s jednotkami a neurčitostmi v těchto hodnotách. Příkazem GetConstant zobrazíme informace o dané konstantě, viz obrázek 5.26 pro gravitační zrychlení v tíhovém poli Země a Newtonovu gravitační konstantu. Příkazem GetValue získáme (pouze) numerickou hodnotu konstanty, příkazem GetUnit (pouze) jednotku ­ obrázek 5.27. Obrázek 5.25: Units Calculator. 109 Obrázek 5.26: Použití balíku ScientificConstants. Obrázek 5.27: Práce s vědeckými konstantami. 5.5 Funkce Definovat funkci můžeme různými způsoby. Při zadávání (pouze) na klávesnici napíšeme název funkce, symbol pro přiřazení (:=), argument funkce, šipku vpravo a funkční předpis. Šipku přitom vytvoříme jako pomlčku následovanou uzavírající lomenou závorkou (symbol ,,větší než ). Chceme-li tedy vytvořit funkci f(x) = x2, zapíšeme do zápisníku příkaz f:=x->x^2. Pro zjednodušení můžeme využít palet. Buď je možné při vytváření příkazu použít šipku z palety Arrows, nebo můžeme vzít celou šablonu příkazu vytvoření funkce z palety Expression a modifikovat v ní požadované symboly. Vytvářet přitom můžeme funkce libovolného počtu proměnných. V prostředí Standard Worksheet (s nímž celou dobu pracujeme) můžeme funkci vytvořit též zápisem bez šipky: f(x):=x^2. Po odkliknutí příkazu musíme v následně zobrazeném vyskakujícím okénku potvrdit, že se jedná o definici funkce. Funkční hodnotu definované funkce v daném bodě získáme zápisem názvu funkce spolu s hodnotami parametrů v závorce (nemusíme přitom zadávat pouze numerické hodnoty). Důležité je rozeznávat funkce od výrazů. Jestliže vytvoříme výraz, například x^2, a přiřadíme jej k nějaké proměnné, např. g, jedná se stále pouze o výraz. Hodnotu g pro x = 5 110 Obrázek 5.28: Definice funkce. Obrázek 5.29: Rozdíl mezi funkcí a výrazem. nemůžeme proto určit jako funkční hodnotu v bodě 5, ale musíme použít vyhodnocovacího příkazu eval, případně do x přiřadit hodnotu 5, viz obrázek 5.29. Funkce (i výrazy) můžeme též definovat po částech pomocí příkazu piecewise. Argu- 111 Obrázek 5.30: Funkce definovaná po částech. menty v závorce signalizují vždy nejprve interval následovaný funkční hodnotou na tomto intervalu. Poslední interval již zapisovat nemusíme, stačí funkční hodnota, Maple ji doplní ve zbývající množině zatím nedefinovaných bodů. Je možné též sestrojit funkci, která je definována pouze na libovolné podmnožině reálných čísel. Pokud má funkce definovaná po částech pouze dva různé předpisy, můžeme k jejímu vytvoření využít symbolu otevřené složené závorky z palety Expression. 5.6 Kreslení a animace Interaktivní prostředí Standard worksheet nabízí hned několik možností k vykreslení grafu funkce. Nejrychlejší a zřejmě nejjednodušší je zadat do zápisníku výraz z funkčního předpisu, kliknout na něj pravým tlačítkem myši a z kontextové nabídky zvolit Plots > 2-D Plot (v případě funkcí jedné proměnné). Zvolením Plots > 3-D Plot z kontextové nabídky spolu se specifikací proměnných zobrazíme funkce dvou proměnných. Dále můžeme využít pomocník Plot Builder, a to dvěma způsoby. Buď opět zapíšeme do dokumentu výraz z funkčního předpisu, klikneme pravým tlačítkem myši a zvolíme Plots > Plot Builder, nebo zamíříme do hlavního menu a vybereme Tools > Assistants > Plot Builder... . V prvním případě se objeví okénko Interactive 112 Plot Builder (obrázek 5.31), v němž upřesníme typ vykreslení. Pokud uvažujeme funkci jedné proměnné, obvyklou volbou je 2-D Plot. Můžeme však volit i jiné jako například vykreslení v polárních souřadnicích (2-D polar plot). Obdobně je tomu u trojrozměrného vykreslování funkcí dvou proměnných. Kliknutím na tlačítko Plot graf zobrazíme v dokumentu. Obrázek 5.31: Zvolení typu vykreslení v Plot Builder. V druhém případě, kdy Plot Builder vyvoláme z hlavního menu, se nám objeví okénko (viz obrázek 5.32), do nějž zadáme výraz z předpisu funkce, kterou chceme zobrazit (zadání nám umožní tlačítka Add, resp. Edit), a proměnné (pokud výraz obsahuje pouze proměnné, systém je vyplní sám). Kliknutím na tlačítko OK přejdeme do již známého okénka pro zvolení typu vykreslení (obrázek 5.31). Nakonec máme možnost k vykreslení grafu funkce použít příkaz plot v případě funkce jedné proměnné a příkaz plot3d pro funkci dvou proměnných. Příkazu plot3d musíme zadat i rozsahy hodnot, kterých mohou proměnné nabývat. Při trojrozměrném vykreslování se graf standardně zobrazuje bez souřadných os (obrázek 5.33). Oběma příkazům (plot, plot3d) můžeme na vykreslení zadávat jak funkce, tak výrazy. Při vykreslování je k dispozici několik atributů, které mění podobu grafu. Opět je několik možností, jak atributy zadávat. Při použití pomocníka Plot Builder se v okénku Interactive Plot Builder (obrázek 5.31) objevuje tlačítko Options. Kliknutím na toto tlačítko přejdeme na okénko (viz obrázek 5.34) umožňující nastavit parametry vykreslení jako jsou rozsah hodnot závisle i nezávisle proměnné, barva a styl vykreslované křivky, titulek grafu, legendu atd. Užitečné je navíc tlačítko Preview umožňující předběžně si prohlédnout současný stav a následně pokračovat v dalším nastavování atributů vykreslení grafu. Při použití příkazu plot (resp. plot3d) můžeme totéž provést specifikací nepovinných parametrů jako jsou thickness pro tloušťku křivky, color pro její barvu, discont pro 113 Obrázek 5.32: Okénko pro zadání výrazu z předpisu funkce a proměnných v Plot Buil- deru. Obrázek 5.33: Vykreslení grafů pomocí kontextové nabídky a příkazů plot, plot3d. zobrazení nespojitostí, labels pro popisky os, legend pro tvar legendy u obrázku, axes pro nastavení souřadých os a další. Ukázku použití příkazu plot s nastavením některých nepovinných parametrů nabízí obrázek 5.35. 114 Obrázek 5.34: Okénko Plot Builderu pro nastavení parametrů grafu. Obrázek 5.35: Vykreslení grafu při specifikaci některých nepovinných parametrů. I u vytvořeného grafu lze upravovat jeho vzhled. Jednak můžeme na graf kliknout pravým tlačítkem myši a z kontextové nabídky vybírat vlastnosti grafu, které jsme mohli měnit již dříve, nebo můžeme využít kontextové lišty těsně nad dokumentem. Po kliknutí 115 Obrázek 5.36: Zadání výrazu z předpisu funkce v Plot Builderu. Obrázek 5.37: Zvolení druhu vykreslení (animace) v Plot Builder. levým tlačítkem myši na graf se ve zmíněné liště zobrazí nástroje skupiny nazvané Plot. K dispozici je též skupina s názvem Drawing. Nástroje v těchto skupinách umožňují do hotového grafu přidávat text, kreslit, či jinak upravovat. 116 V systému Maple můžeme též vytvářet animace. Animace se skládá z několika grafů, které jsou po spuštění zobrazené v sekvenci za sebou. Vytvoříme ji buď příkazem animate z balíku plots, nebo pomocí Plot Builder. Obrázky 5.36 a 5.37 ukazují nastavení Plot Builder pro vytvoření animace, obrázek 5.38 ilustruje tentýž příklad na použití příkazu animate. Obrázek 5.38: Animace vytvořená příkazem animate. Ukončení Plot Builderu, resp. provedení příkazu, umístí do dokumentu ,,prázdný graf. Kliknutím na něj zobrazíme skupinu nástrojů v kontextové liště s názvem Animation. Pomocí těchto nástrojů můžeme animaci spustit, změnit její rychlost, podívat se na libovolný snímek animace atd. Animace můžeme upravovat stejně jako grafy (vytvořené příkazy plots, plots3d), tj. měnit tloušťku, barvu a druh křivky, souřadné osy, legendu apod. Navíc máme k dipsozici několik nepovinných parametrů, díky nimž můžeme například urřit počet grafů, z nichž se animace skládá, nebo kolik grafů má zůstat trvale zobrazených (po spuštění animace). 5.7 Práce s neurčitostmi Pro práci s neurčitostmi nabízí systém Maple několik nástrojů. Jejich použití závisí zpravidla na množství informace, kterou máme. 5.7.1 Intervalová aritmetika V případě, že známe pouze velikost (intervalu) neurčitosti, využíváme intervalové aritmetiky implementované v balíku Tolerances. Proměnné (resp. konstanty) definujeme spolu s intervalem chyby (neurčitosti) pomocí symbolu &+­ a pracujeme s nimi jako s ,,obyčejnými proměnnými (resp. konstantami), viz obrázek 5.39. 117 Obrázek 5.39: Intervalová aritmetika s balíkem Tolerances. Obrázek 5.40: Práce s balíkem ScientificErrorAnalysis. 118 5.7.2 Scientific Error Analysis Balík ScientificErrorAnalysis umožňuje pracovat s veličinami, které mají nějakou střední hodnotu a přiřazenou neurčitost (resp. chybu). Na rozdíl od intervalové aritmetiky je nyní interval neurčitosti prokládán normálním rozložením hodnot se střední hodnotou ve středu intervalu a směrodatnou odchylkou rovnou délce poloviny intervalu. Navíc je možné přiřazovat veličinám korelaci (lineární závislost) mezi sebou. Veličiny definujeme příkazem Quantity, propagaci chyb daným výrazem určíme příkazem combine, korelaci nastavíme příkazem SetCorrelation. Ilustraci poskytuje obrázek 5.40. 5.7.3 Fuzzy Sets Toolbox Toolbox FuzzySets není standardní součástí systému Maple, a je nutné jej dokoupit. Po instalaci funguje jako klasický balík příkazů, který umožňuje využívat fuzzy logiku a konstruovat a používat fuzzy množiny. Fuzzy množina může být definována obecně na libovolné množině objektů U, je však možné (a často vhodné) omezit balík FuzzySets pouze na množinu reálných čísel. K dispozici je několik konstruktorů fuzzy množin, přičemž ten nejuniverzálnější je téměř totožný s příkazem piecewise pro tvorbu po částech definovaných funkcí. Obrázek 5.41: Konstrukce fuzzy množiny a její zobrazení. Obrázek 5.41 ilustruje načtení balíku FuzzySets s omezením na množinu reálných 119 čísel a konstrukci dvou různých fuzzy množin s následným vykreslením jejich funkcí příslušnosti. V prvním případě (vlevo) je použit konstruktor vytvářející fuzzy množinu s funkcí příslušnosti, jejíž tvar odpovídá tomuto řeckému písmenu. Napravo je fuzzy množina vytvořena pomocí obecného konstruktoru (který je analogický k příkazu piecewise). Obrázek 5.42: Zobrazení sjednocení a průniku fuzzy množin. S fuzzy množinami můžeme provádět množinové operace. Na obrázku 5.42 jsou vyznačeny operace sjednocení (vlevo) a průnik (vpravo) právě vytvořených množin. K dispozici přitom máme i další množinové operace jako jsou odečítání množin, komplement množiny (v univerzu) a další. Ukázku komplementu fuzzy množiny představuje obrázek 5.43. Na obrázích 5.42, 5.43 jsou vždy vykresleny funkce příslušnosti původních množin i těch výsledných (po aplikaci dané operace). Výsledné množiny jsou znázorněny tlustou čarou. Balík FuzzySets poskytuje též prostředky tzv. defuzzifikace, tedy přiřazení číselné hodnoty dané fuzzy množině. Standardní proces defuzzifikace přiřadí fuzzy množině její těžiště (první moment), je však možné použít i jiné typy defuzzyfikací. Pro omezení na doménu reálných čísel je k dispozici ještě metoda hledající medián funkce příslušnosti (specifikuje se pomocí atributu method=area), viz obrázek 5.44. 120 Obrázek 5.43: Komplement fuzzy množiny. Obrázek 5.44: Defuzzifikace. 121 5.7.4 Statistics pro neurčitost Pro práci s nástroji matematické statistiky a analýzy dat je určen balík Statistics. Nabízí širokou škálu příkazů, mezi nimiž jsou i příkazy pro vytváření náhodných veličin mnoha různých pravděpodobnostních rozložení a práci s nimi. Z pohledu neurčitostí se zaměřme právě na generování náhodných veličin, které využíváme při Monte Carlo simulacích. Na obrázku 5.45 můžeme vidět načtení balíku Statistics a balíku plots, který potřebujeme k použití příkazu display. Definujeme náhodnou veličinu s lognormálním rozložením pravděpodobnosti (se střední hodnotou 1340 a směrodatnou odchylkou rovnou 0.6) a vykreslíme její hustotu. Následně vygerujeme 10 realizací této veličiny, kterým přiřadíme příkazem Rank pořadí (od nejmenší hodnoty). Poté vygenerujeme 1000 realizací definované náhodné veličiny, opět vykreslíme její hustotu, tentokrát spolu s histogramem vygenerovaných hodnot. Příkazy Mean a Variance určíme střední hodnotu a rozptyl vygenerovaných hodnot. Obrázek 5.45: Práce s balíkem Statistics. 122 5.8 Základy programování Doposud jsme vykonávali příkazy jednotlivě. Systém Maple obsahuje též programovací jazyk, který umožňuje vytváření složitějších programových konstrukcí. 5.8.1 Podmíněný příkaz if Syntax: if podminka1 then prikazy1 elif podminka2 then prikazy2 elif podminka3 then prikazy3 ... else prikazyN end if Jak můžeme vidět na obrázku 5.46, v podmíněném příkazu nemusí být použity všechny prvky uvedené výše. Podmínku tvoří vždy výraz, u nějž je možné rozhodnout, zda je pravdivý, či nikoliv. Příkazů, které se mají provést při splnění podmínky, může být více. Od sebe je oddělíme středníkem, případně dvojtečkou. Při vytváření příkazu na více řádků použijeme k přechodu mezi řádky současného stisknutí kláves Shift a Enter. Stisk samotné klávesy Enter by způsobil vyhodnocení rozepsaného příkazu. Obrázek 5.46: Použití podmíněného příkazu if. 123 5.8.2 Cyklus for Syntax 1: for iterator from pocatek by prirustek to konec do prikazy end do Syntax 2: for promenna in vyraz do prikazy end do Na příkladech (obrázek 5.47) opět vidíme, že nemusíme využít všech prvků obecné syntaxe příkazu. Zejména pokud neuvedeme prirustek, bude system pracovat s hodnotou prirustku rovnou jedne. Příkazů, které se mají v jednom průchodu cyklem provést, může být opět více (a musí být od sebe odděleny středníkem, či dvojtečkou). Obrázek 5.47: Použití cyklu for. 5.8.3 Cyklus while Syntax: while podminka do prikazy end do Na obrázku 5.48 je pomocí cyklu while číslo 112 celočíselně dělené dvěma, dokud je zbytek po dělení rovný nule (zbytek po dělení určíme příkazem irem). 124 Obrázek 5.48: Použití cyklu while. 5.8.4 Iterativní příkazy Maple obsahuje několik iterativních příkazů, které jsou optimalizovány pro určité specifické operace. Tabulka 2: Přehled iterativních příkazů Příkaz Funkce seq vytvoří posloupnost add vypočítá numerický součet mul vypočítá numerický součin select vypíše operandy, které vyhovují podmínce remove vypíše operandy, které nevyhovují podmínce selectremove vypíše zvlášť operandy, které vyhovují podmínce, a operandy, které ji nevyhovují map aplikuje operaci na operandy výrazu zip aplikuje binární operaci na operandy dvou seznamů či vektorů Obrázek 5.49 ilustruje použití několika vybraných iterativních příkazů. Obrázek 5.49: Použití iterativních příkazů. 125 126 Literatura [1] J.A. Adam. Mathematics in Nature. Princeton and Oxford, 2003. ISBN 0-691-11429- 3. [2] B. Barnes and G.R. Fulford. Mathematical Modelling With Case Studies: A Differential Equation Approach Using Maple. CRC Press, London, 2002. ISBN 0-415-29803-2. [3] S.P. Ellner and J. Guckenheimer. Dynamic Models in Biology. Princeton University Press, Princeton, New Jersey, 2006. ISBN 0-691-12589-9. Dodatky dostupné z: http: //www.eeb.cornell.edu/Ellner/lte/lte.html [4] W. Gander and J. Hřebíček. Solving Problems in Scientific Computing Using Maple and MATLAB. 4th, expanded and rev. ed. Springer, Heidelberg 2004, 476 p. ISBN 3-540-21127-6. [5] J. Hřebíček, M. Hejč, I. Holoubek and J. Pešl. Current Trends in Environmental Modelling with Uncertainties. In Proceedings of the iEMSs Third Biennial Meeting ¨Summit on Environmental Modelling & Software¨. Burlington : International Environmental Modelling and Software Society, 2006. s. 342-347. ISBN 1-4243-0852-6. [6] J. Hřebíček, J. Žižka. Vědecké výpočty v biologii a biomedicíně. Dostupné z: http: //portal.med.muni.cz/download.php?fid=502 [7] S. Isukapalli. Uncertainty analysis of transport transformation models. Ph.D. thesis, State University of New Jersey, New Brunswick, New Jersey, 1999. [8] J. Kalas a Z. Pospíšil. Spojité modely v biologii. MUNI, Brno, 2001. ISBN 80-210- 2626-X. [9] J. Kalas a M. Ráb. Obyčejné diferenciální rovnice. MUNI, Brno, 2001. ISBN 80-210- 2589-1. [10] A. Kobza. Diferenční rovnice ve středoškolské matematice. Diplomová práce, MUNI, 2001. [11] J. Lepš. Růst populace [online]. Dostupné z: http://botanika.bf.jcu.cz/suspa/ vyuka/materialy/Rustpopulace.ppt. [12] L. Madzia. Zajíc polní [online]. Dostupné z: http://www.prirodainfo.cz/karta. php?cislo=3080.00. [13] V. Novák. Základy fuzzy modelování. BEN -­ technická literatura, Praha, 2000. 176 s. 127 [14] J. Pešl. Uncertainty handling in the environmental modeling using computer algebra systems with online data manipulation. Ph.D. thesis, Brno, 2005. [15] Z. Pospíšil. Dynamika populací s oddělenými generacemi [online]. Dostupné z: http: //www.math.muni.cz/~pospisil/FILES/DPNG.pdf. [16] A. Saltelli, K. Chan and E.M. Scott. Sensitivity Analysis. John Wiley and Sons, Ltd.: West Sussex, England. 2000. [17] A. Saltelli. Global Sensitivity Analysis: An Introduction. In Proc. 4th International Conference on Sensitivity Analysis of Model Output (SAMO 2004), pages 27 ­ 43. [18] A. Sharov. Quantitative Population Ecology. On-Line Lectures. Dostupné z: http: //home.comcast.net/~sharov/PopEcol/. [19] The Council for Regulatory Environmental Modeling. Draft Guidance on the Development, Evaluation, and Application of Regulatory Environmental Models. Washington, D.C., 2003. Dostupné z: http://www.modeling.uga.edu/tauc/other_papers/ CREM%20Guidance%20Draft%2012_03.pdf. [20] J. Urbánek. Numerická stabilita v environmentálním modelování s neurčitostmi. Diplomová práce, MUNI, 2009. [21] E.K. Yeargers, R.W. Shonkwiler, J.V. Herod. An Introduction to the Mathematics of Biology. With Computer Algebra Models. Birkhauser, Boston-Basel-Berlin, 1996. ISBN 0-8176-3809-1. 128