Uvod k pocatecnimu problemu pro obycejne diferencialni rovnice Budeme resit ulohu mnozeni bakterii. Na zacatku mame jedinou bakterii a vime, ze za urcity cas se takova bakterii rozmnozi na 2. Zajima nas pocet bakterii v case t. Uloha se da zapsat jako reseni obycejne diferencialni rovnice (ODE) dn(t) = kn(t), (1) dt kde N(t) vyjadruje pocet bakterii v case t. Pocatecni podminka je N(0) = 1. Rovnice nam konkretne rika, ze za jednotku casu se nam rozmnozi kazda bakterie k-krat. Stejna rovnice popisuje take napriklad ubytek danych radionuklidu pri radioaktivnim rozpadu. V tomto pripade je k < 0. My ulohu jeste trochu zobecnime a budeme predpokladat, ze k neni konstanta, ale funkce casu k(t). Napriklad, ze bakterie se mnozi predevsim, kdyz je teplo, tedy v lete. Naopak v zime se nam nebudou mnozit vubec. Tuto casovou zavislost vyjadrime jako k(t) = (1 + cos t). Mame tedy resit ODE dn(t) = (1 + cos t)n(t), (2) dt s pocatecni podminkou N(0) = 1. Muzete se pokusit uhadnout analyticke reseni ulohy. Pokud se vam to nepodari, prozradim vam, ze to je V prednaskach se ODE zapisuji takto N(t) = exp(t + sin t). (3) dy(x) = f(x, y(x)). (4) dx Budeme se tohoto znaceni drzet a preznacime promenne, dy(x) = (1 + cos x)y(x), (5) dx Zatim zapomeneme, ze zname analyticke reseni. Co tedy o uloze vime. Zname hodnotu funkce y(x) v bode 0 a zname vsude jeji derivaci. Chceme pritom najit postup, jak ziskat funkcni hodnoty y(x) v libovolnem bode x. To, ze zname derivaci znamene, ze zname smernici tecny grafu. Muzeme tedy zacit v bode 0 nakreslit z tohoto bodu tecnu a hodnotu funkce y(x) v bode blizkem k 0 hledat na teto tecne. V novem bode muzeme opet vypocitat smernici tecny a postupovat po primce s touto smernici. Tento 1
postup je znam jako Eulerova metoda. Matematicky ji lze odvodi pomoci Taylorova rozvoje funkce. y(x + h) = y(x) + h dy(x) dx +..., (6) Derivace y(x) je ale rovna f(x, y(x)). Pro nasi funkci tedy mame y(x + h) = y(x) + h(1 + cos x)y(x) +..., (7) Jedine, cim muzeme Eulerovu metodu zpresnit je zmensit delku kroku. Muzeme vsak metodu zkusit modifikovat tak, abychom dostali presnejsi vyjadreni smernice tecny. Rekneme, ze nejprve udelame polovicni krok, tedy krok o h/2 pomoci Eulerovy metody. V tomto bode vypocitame novou smernici tecny, ktera se bude rovnat f(x + h/2, y(x) + h/2f(x, y(x))). Tuto smernici pak pouzijeme ke kroku z bodu x do bodu x + h. Metoda tedy je y(x + h) = y(x) + hf(x + h/2, y(x) + h/2f(x, y(x))), (8) a pro nasi funkci y(x + h) = y(x) + h(1 + cos(x + h/2))(y(x) + h/2(1 + cos x)y(x)). (9) 2
Teto metode se rika metoda stredniho bodu (Midpoint) a je znazornena na dalsim obrazku. Pro nasi funkci neni pri volbe dlouheho kroku vhodna, viz. jeste dalsi obrazek. Dalsi jednoducha metoda spociva v tom, ze se pokusime odhadnout smernici tecny v bode x + h, pote udelame prumer smernic tecny v bode x a v bode x+h a po primce s touto smernici postupujeme. Do bodu x+h se opet 3
dostaneme pomoci Eulerovy metody a smernici tecny v tomto bode muzeme tedy napsat jako f(x + h, y(x) + hf(x, y(x))). Metoda tedy je y(x + h) = y(x) + h/2[f(x, y(x)) + f(x + h, y(x) + hf(x, y(x)))], (10) a pro nasi funkci y(x+h) = y(x)+h/2[(1+cos x)y(x)+(1+cos(x+h))(y(x)+h(1+cos x)y(x))]. (11) Teto metode se rika Heunova a je znazornena na dalsim obrazku a pro nasi funkci i na obrazku pod tim. 4
Vsechny metody v tomto textu patri mezi Runge-Kuttovy metody. 5