8 Differentiaaliyhtälöiden ratkaisemisesta 8.1 Johdanto Tavalliset diffirentiaaliyhtälöt (TDY) ovat usein käytetty matemaattinen malli fysikaalisia ilmiöitä tutkittaessa. Tässä luvussa käsitellään Cauchy probleeman ( 1. kl DY:n alkuarvotehtävä ) numeerista ratkaisemista. Probleema on muotoa: Etsi funktio y C 1 (I) siten, että y (t) = f(t,y(t)), t I, y(t 0 ) = y 0, (8.1) missä f : I (, + ) R on annettu reaaliarvoinen funktio. Esimerkki 8.1. Tarkastellaan esimerkkiä TDY:n muodostumisesta. Useat käytännön ilmiöt noudattavat Newtonin liikelakia F = ma, missä F on voima, m on massa ja a on kiihtyvyys. Yhtälö on diffrentiaaliyhtälö, sillä kiihtyvyys on nopeuden v derivaatta, mikä puolestaan on paikan x derivaatta. Jos sovelletaan liikelakia raketin nopeuden määrittämiseen, niin voidaan aluksi asettaa oletuksia: 1. raketti laukaistaan ajanhetkellä t = 0 ja liike on kohtisuoraan ylöspäin, 2. rakettia puskeva voima on vakio = 5370 ja ilmanvastus aiheuttaa vastavoiman v 3/2 /ln(2+v), lisäksi maan vetovoima aiheuttaa alaspäin suuntautuneen voiman, mikä on vakio = 981. 3. raketin massa pienenee polttoaineen palaessa yhtälön 321 24t mukaisesti, 4. aika on riippumaton muuttuja. Oletusten nojalla voidaan yhtälö F = ma kirjoittaa muotoon 5370 981 v 3/2 /ln(2+v) = (321 24t)v v(0) = 0 Huomautus 8.1. Yhtälö (8.1) on ns. tavallisen 1. kertaluvun differentiaaliyhtälön alkuarvotehtävä. Yleinen differentiaaliyhtälö on yhtälö, joka sisältää tuntemattoman funktion yhden tai useamman kertaluvun derivaatan. Esimerkiksi m:nnen kertaluvun TDY on muotoa: y (m) = f(t,y,y,y,y,...,y (m 1) ) y(t 0 ) = y 0, y (t 0 ) = y 0, y (t 0 ) = y 0,...,y (m 1) (t 0 ) = y (m 1) 0 Se voidaan paluttaa sijoituksella y j+1 = y (j), j = 0,1,...,m 1 173
yhtälöryhmän muotoon y 1 = y 2 y 2 = y 3. y m 1 = y m y m = f(t,y 1,y 2,...,y m ) y 1 (t 0 ) = y 0, y 2 (t 0 ) = y 0,...,y m (t 0 ) = y (m 1) 0 (8.2) Jatkossa voidaankin tarkastella menetelmiä ainoastaan 1. kl tavalliselle DY:lle, koska yleinen tapaus muokkautuu niiden yhtälöryhmäksi. Esitettävät menetelmät voidaan yleistää suoraviivaisesti yhtälöryhmille. Esimerkki 8.2. Heilurin liikeyhtälö on muotoa mlθ (t) = mgsinθ(t) Θ(0) = Θ 0 Θ (0) = 0 Merkitsemällä y 1 = Θ, y 2 = Θ, saadaan y 1 = y 2, y 1 (0) = Θ 0 y 2 = g l siny 1, y 2 (0) = 0 (8.3) (8.4) Jos f on jatkuva t:n suhteen, niin yhtälö (8.1) toteuttaa y(t) y 0 = t t 0 f(τ,y(τ))dτ. (8.5) Kääntäen, jos y on määritelty yhtälöllä (8.5), niin se on jatkuva I:llä ja y(t 0 ) = y 0. Edelleen, koskay on jatkuvan funktionf(,y( )) antiderivaatta, niiny C 1 (I) ja pätee, että y (t) = f(t,y(t)). Siten, jos f on jatkuva ovat probleemat (8.1) ja (8.5) ekvivalentteja. Siten, myös niiden numeerisissa ratkaisumenetelmissä on tiettyjä yhtäläisyyksiä. Esimerkki 8.3. Jos yhtälön (8.1) funktiossa f ei esiinny riippuvuutta y:stä, niin yhtälö voidaan ratkaista suoraan määräämättömällä integroinnilla. Esim. y = 3t 2 4t 1 +(1+t 2 ) 1 Integroimalla yhtälö saadaan y(5) = 17 y(t) = t 3 4lnt+arctant+C Vakio C voidaan nyt valita niin että y(5) = 17. 174
Esimerkki 8.4. Yhtälön (8.5) avulla alkuarvotehtävä voidaan ratkaista numeerisesti käyttämällä ns. Picardin-Lindelöfin iterointia y 0 (t) = y(t 0 ) y i (t) = y(t 0 )+ t t 0 f(τ,y i 1 (τ))dτ, i > 0 Ratkaistaan esimerkkinä alkuarvotehtävä y = ty = f(t,y(t)) y(1) = 2 Ratkaisu. Muodostetaan iteraatiojono y 0 (t) = y(1) = 2 y 1 (t) = 2+ y 2 (t) = 2+ y 3 (t) = 2+. t 1 t 1 t 1 2τdτ = 3 t 2 Tarkka ratkaisu on y(t) = 2e (1 t2 )/2. τ(3 τ 2 )dτ = 13 4 3 2 t2 + 1 4 t4 τ( 13 4 3 2 τ2 + 1 4 τ4 )dτ = 79 24 13 8 t2 + 3 8 t4 1 24 t6 y 2.0 1.8 1.6 1.4 1.2 1.0 0.8 0.6 0.4 0.2 Sel ite ( ) 1( ) 2( ) 3 ( ) 0.0 1.0 1.1 1.2 1. 3 1.4 1.5 1. 6 1.7 1.8 1.9 2.0 t Kuva 1: Picardin-Lindelöfin iteraatio 175
8.2 Ratkaisun olemassaolo ja yksikäsitteisyys Probleemalla (8.1) ei ole aina ratkaisua. Silloinkin jos ratkaisu on olemassa voi se olla määritelty vain pisteen t 0 ympäristössä. Tästä esimerkkinä on yhtälö y = 1+y 2 y(0) = 0 minkä ratkaisu on y(t) = tant. Ts. y(t) = +, kun t = π/2. Vaikka f olisi jatkuva ei yhtälöllä (8.1) ole välttämättä yksikäsitteistä ratkaisua. Yksinkertainen esimerkki tilanteesta on y = y 2/3 y(0) = 0 minkä ratkaisuja ovat esim. y(t) = 0 ja y(t) = 1 27 t3. Jotta yhtälöllä (8.1) olisi yksikäsitteinen ratkaisu täytyy päteä: Lause 8.1. Jos f on jatkuva joukossa D = (t,y) a t b, < y < + } ja on olemassa vakio L siten, että kaikilla (t,y 1 ),(t,y 2 ) D pätee epäyhtälö f(t,y 1 ) f(t,y 2 ) L y 1 y 2 (8.6) niin yhtälöllä (8.1) on yksikäsitteinen, joukoss D jatkuvasti derivoituva ratkaisu y(t). Huomautus 8.2. Jos f(t,y) on jatkuvasti derivoituva y:n suhteen kun (t,y) D, niin voidaan valita L = sup f y(t,y) (t,y) D Huomautus 8.3. Jos f ja f y ovat jatkuvia kaikilla y [a,b], niin tehtävällä (8.1) on yksikäsitteinen ratkaisu y(t), a t b, ja tehtävä on hyvin käyttäytyvä. Esimerkki 8.5. DY:llä y (t) = 1+tsin(ty), 0 t 2 y(0) = 0 on yksikäsitteinen ratkaisu välillä t [0,2], koska funktiot f(t,y) = 1+tsin(ty) ja f y (t,y) = t 2 cos(ty) ovat molemmat jatkuvia y:n suhteen, kun 0 t 2 = on olemassa yksikäsitteinen ratkaisu. 176
8.3 Taylorin kehitelmiin perustuvat menetelmät Oletetaan, että funktio y on esitetty Taylorin sarjana y(t+h) = y(t)+hy (t)+ 1 2! h2 y (t)+ 1 3! h3 y (t)+...+ 1 m! hm y (m) (t)+... Numeerisesti laskettaessa katkaistaan Taylorin sarja äärelliseen määrään termejä. Kehitelmää, jossa on m + 1 termejä, sanotaan m:nen kertaluvun Taylorin sarjakehitelmäksi. Jos askelpituus h on tarpeeksi pieni, saadaan tällöin usein riittävän tarkkoja approksimaatioita funktion arvoille. 8.3.1 Eulerin menetelmä Ensimmäisen kertaluvun Taylorin menetelmää kutsutaan Eulerin menetelmäksi. Haetaan alkuarvotehtävän y = f(t,y(t)) y(a) = y a ratkaisua välillä [a, b]. Käyttämällä Taylorin kehitelmän 2:ta ensimmäistä termiä saadaan ns. Eulerin kaavaa y(t+h) = y(t)+hf(t,y(t)), (8.7) missä h = (b a)/n on osavälin pituus edettäessä n:llä askeleella pisteestä t = a pisteeseen t = b. Merkitsemällä t i = t 0 +ih, y i y(t i ), saadaan Eulerin menetelmä: y 0 = y(t 0 ) y i+1 = y i +hf(t i,y i ), i = 0,1,2,... Pseudokoodi Eulerin menetelmälle voidaan kirjoittaa seuraavasti: program Euler integer parameter n 100 real a 1,b 2,x 4 integer k real h,t h (b a)/n t a output 0,t,x for k = 1 to n do x x+hf(t,x) t t+h output k,t,x end for end program Euler 177
Esimerkki 8.6. Ratkaistaan Eulerin menetelmällä y (t) = y y(0) = 1 55.0 44.2 33.4 Sel ite = Euler approx., n=36 Euler approx., n=18 y 22.6 11.8 1.0 0.0 0.4 0.9 1.3 1.8 2.2 2.7 3.1 3.6 4.0 t Kuva 2: Eulerin iteraatio Kuvassa 2 on esitetty tarkka ratkaisu y = e t ja Eulerin approksimaatiot eri h:n arvoilla, välillä [0, 4]. Kuten kuvastakin havaitaan, ei Eulerin menetelmä ole kovin tarkka, koska Taylorin sarjan katkaisuvirhe on luokkaa O(h 2 ). 8.3.2 Eulerin menetelmän virhe Approksimoidaan, kuinka suuri virhe tehdään siirryttäessä pisteestä t n pisteeseen t n+1 olettaen, että y n = y(t n ). Taylorin kehitelmän avulla saadaan e n (h) = y(t n +h) y n+1 = ( y(t n )+hf(t n,y(t n ))+ 1 2 h2 y (ξ n ) ) ( y n +hf(t n,y n ) ) = y(t n ) y n +h [ f(t n,y(t n )) f(t n,y n ) ] + } } virhe askeleella n ξ n ]t n,t n +h[. 1 2 h2 y (ξ n ), }} paikallinen virhe Paikallinen menetelmävirhe e n (h) 1 2 h2 max y, (O(h 2 )). Jokaisella askeleella tehdään kertaluokkaa h 2 oleva (lokaali) virhe. Toisaalta, jotta päästäisiin pisteestä t 0 pisteeseen T tarvitaan (T t 0 )/h askelta. Siten kokonaisvirhe on pahimmassa tapauksessa luokkaa O(h). Jos lisäksi huomioidaan pyöristysvirhe, ε, joka askeleella, niin päädytään kokonaisvirheeseen E h c 1 h+ c 2 h. 178
Eulerin menetelmän virhe saattaa kasvaa räjähdysmäisesti liian pitkän askelpituuden seurauksena. Asiaan palataan stabiilisuuden tarkastelun yhteydessä. 8.3.3 Korkeamman kertaluvun Taylorin menetelmät Menetelmän tarkkuutta voidaan lisätä ottamalla Taylorin kehitelmästä lisää termejä, muodosta y(t+h) = y(t)+hy (t)+ 1 2 h2 y (t)+o(h 3 ) saadaan toisen kertaluvun Taylorin menetelmä y n+1 = y n +hf(t n,y n )+ 1 2 h2 g(t n,y n ), (8.8) missä g(t,y) = f(t,y) t +f(t,y) f(t,y). y Samalla tavalla voitaisiin muodostaa korkeamman kertaluvun menetelmiä. Taylormenetelmien suosiota vähentää kuitenkin tarve laskea funktion f osittaisderivaatat. Esimerkki 8.7. 4:nen kertaluvun menetelmässä ottaisimme Taylorin sarjasta y(t+h) = y(t)+hy (t)+ 1 2! h2 y (t)+ 1 3! h3 y (t)+ 1 4! h4 y (4) (t)+o(h 5 ) 5 ensimmäistä termiä mukaan. Tällöin virhe olisi luokkaa O(h 5 ). Seuraavassa koodissa lasketaan ratkaisu alkuarvotehtävälle y = 1+y 2 +t 3 program T aylor integer parameter n 100 real a 1,b 2,x 4 integer k real h,t,x,x,x,x,x (4) h (b a)/n t a output 0,t,x for k = 1 to n do x 1+x 2 +t 3 x 2xx +3t 2 x 2xx +2(x ) 2 +6t x (4) 2xx +6x x +6 x x+h [ x + 1h[ x + 1h[ x + 1 2 3 4 t a+kh output k,t,x end for end program T aylor y(1) = 4 [ x (4) ]]]] 179
8.4 Runge-Kuttan menetelmät Korkeamman kertaluvun Taylorin menetelmiä käytettäessä tarvitaan derivaataty,y, jne., mikä on merkittävä este niiden tehokkaalle käytölle. Ideaalisessa tapauksessa differentiaaliyhtälön ratkaisuun ei tarvittaisi muuta, kuin funktion f arvojen laskemista. Runge-Kutta menetelmät on suunniteltu matkimaan Taylorin menetelmiä ilman, että tarvitsee laskea analyyttisesti differentiaaliyhtälön derivaattoja. Niissä pyritään tarkkuutta parantamaan laskemalla funktion f(t, y) arvoja useammissa pisteissä ja ottamalla niistä sopivia lineaarikombinaatioita. Tarkastellaan aluksi 2. kertaluvun Runge- Kutta menetelmän muodostamista. Korkeamman kertaluvun menetelmät muodostetaan samoilla periaatteilla, mutta ne on teknisesti työläitä esittää. Kertaluvun 4 Runge- Kutta menetelmä on paljon käytetty ja riittävän tarkka käytännön laskentaan. 8.4.1 Kertaluvun 2 menetelmä Funktion y(t+h) Taylorin kehitelmä on: y(t+h) = y(t)+hy (t)+ h2 2! y (t)+ h3 3! y (t)+... (8.9) Diffrentiaaliyhtälöstä saadaan y (t) = f y (t) = f t +f y y = f t +f y f missä f y = f y, f t = f t Yhtälö (8.9) voidaan nyt kirjoittaa muotoon y(t+h) = y +hf + 1 2 h2 (f t +ff y )+O(h 3 ) = y + 1 2 hf + 1 2 h[ f +hf t +hff y ] +O(h 3 ) (8.10) missä y = y(t) ja f, f t, f y on kehitetty pisteessä (t,y). Osittaisderivaatat voidaan eliminoida kaavasta käyttämällä apuna kahden muuttujan funktion Taylor kehitelmää: f(t+h,y +hf) = f +hf t +hff y +O(h 2 ) Yhtälöstä (8.10) saadaan y(t+h) = y(t)+ h 2 f(t,y)+ h 2 f( t+h,y(t)+hf(t,y) ) 180
tai missä F 1 = hf(t,y) y(t+h) = y(t)+ 1 2 (F 1 +F 2 ), (8.11) F 2 = hf(t+h,y +F 1 ) Muotoa (8.11) kutsutaan toisen kertaluvun Runge-Kutta menetelmäksi. Se tunnetaan myös ns. Heun menetelmänä. Huomautus 8.4. Yleisesti 2 kl Runge-Kutta menetelmälle pätee: y(t+h) = y(t)+w 1 hf(t,y)+w 2 hf(t+αh,y +βhf(t,y))+o(h 3 ) missä kertoimet w 1,w 2,α ja β on määrättävissä. Edelleen, käyttämällä kahden muuttujan funktion Taylor sarjakehitelmää, saadaan y(t+h) = y +w 1 hf +w 2 h [ f +αhf t +βhff y ] +O(h 3 ) (8.12) Vertaamalla yhtälöitä (8.10) ja (8.12) nähdään, että kertoimien tulee toteuttaa w 1 +w 2 = 1 αw 2 = 1 2 βw 2 = 1 2 Eräs ratkaisu yhtälöryhmälle on α = 1, β = 1, w 1 = 1 ja w 2 2 = 1. Tällöin tuloksena 2 saadaan Heun kaava (8.11). Yhtälöryhmällä on myös toinen ratkaisuα = β = 1 2, w 1 = 0 ja w 2 = 1. Tällöin saadaan ns. modifoitu Eulerin menetelmä: y(t+h) = y(t)+f 2 missä F 1 = hf(t,y) F 2 = hf(t+ 1 2 h,y + 1 2 F 1) 8.4.2 Kertaluvun 4 menetelmä Runge-Kuttan neljännen kertaluvun menetelmä on paljon käytetty menetelmä alkuarvotehtäviä ratkottaessa. Sen kaava on seuraava: y(t+h) = y(t)+ 1 6 (F 1 +2F 2 +2F 3 +F 4 ) missä F 1 = hf(t,y) F 2 = hf(t+ 1 2 h,y + 1 2 F 1) F 3 = hf(t+ 1 2 h,y + 1 2 F 2) F 4 = hf(t+h,y +F 3 ) 181
Kuten edellisestä näkyy, neljännen kertaluvun menetelmässä funktio lasketaan neljässä eri pisteessä. Menetelmässä saadaan mukaan Taylorin sarjakehitelmän termit h 4 - termiin saakka. Täten virhe on kertaluokkaa O(h 5 ). Pseudokoodi: procedure RK4(f,t,x,h,n) integer j,n real K 1,K 2,K 3,K 4,h,t,t a,x external function f output 0,t,x t a t for j = 1 to n do K 1 hf(t,x) K 2 hf(t+ 1 2 h,x+ 1 2 K 1) K 3 hf(t+ 1 2 h,x+ 1 2 K 2) K 4 hf(t+h,x+k 3 ) x x+ 1 6 (K 1 +2K 2 +2K 3 +K 4 ) t t a +jh output j,t,x end for end procedure RK4 Huomautus 8.5. Neljännen kl Runge-Kutta menetelmässä tarvitaan neljä f:n kehittämistä, kun taas toisen kl menetelmässä tarvitaan vain kaksi. Ollakseen tehokkaampi tulisi 4:nen kl menetelmän ottaa kaksi kertaa pidempiä askelia kuin 2:n kl menetelmä virheen pysyessä korkeintaan samana. Toisin sanoen olisi oltava C(2h) 5 2Ĉh3. Yleensä näin onkin, mutta jos funktio f on epäsäännöllinen ja h suuri, niin 2. kl menetelmä saattaa olla laskennallisesti tehokkaampi. Korkeampi kertaluku ei siis aina tarkoita suurempaa laskennallista tehokkuutta. 8.5 Askelpituuden säätämisestä Käytännön tilanteissa ratkaistaessa alku-arvotehtäviä, on aina tarpeen arvioida saatavan numeerisen ratkaisun tarkkuutta. Yleensä on annettu etukäteen joku virhetoleranssi, ja ratkaisun virheen on oltava tämän toleranssin rajoissa. Kun käytettävä numeerinen menetelmä on valittu, virhetoleranssi määrää käytettävän askelpituuden. Sopivan askelpituuden määrääminen voi olla vaikeaa, vaikka olisimme huolestuneita vain paikallisesta virheestä. Lisäksi pieni askelpituus voi olla tarpeellinen vain joissain ratkaisukuvaajan osissa ja isompi riittää joissain muissa osissa. Edellä annettujen syiden takia on kehitetty useita menetelmiä joissa askelpituus määritetään automaattisesti. Oletetaan, että halutaan numeerisen ratkaisun virhe jossain pisteessä t > t 0 pienemmäksi kuin annettu vakio δ. Pyritään siis valitsemaan askelpituus h siten, että askeleen virhe = h δ t t 0 =: hδ 0 182
Mikäli yhden askeleen virhe olisi suurempi, niin globaali virhe kasvaisi liikaa. Toisaalta, jos virhe olisi paljon pienempi, niin tehtäisiin turhaa laskentatyötä. Esimerkki 8.8. Eulerin menetelmässä paikallinen virhe on e(h) = h 2 y (ξ)/2. Vaatimalla, että paikallinen virhe on enintään ε, saadaan 2ε h y A, missä y A := f(y k) f(y k 1 ) t k t k 1 y (t k ) y (t k 1 ) t k t k 1 y (t k ) 8.5.1 Virhekontrolloitu Runge-Kutta askel Tarkastellaan 4. kl Runge-Kutta menetelmän virhettä yhdessä askeleessa. Olkoon käytetty askelpituus h 1. Merkitään y 1 :llä approksimaatiota y(t n +2h 1 ):lle, mikä on saatu ottamalla yksi 2h 1 :n mittainen askel lähtien y(t n ):stä. Merkitään vastaavasti y 2 :lla approksimaatiota, ottamalla peräkkäin kaksi h 1 :n mittaista askelta. Koska menetelmän kertaluku on neljä, saadaan y(t n +2h 1 ) = y 1 +C n (2h 1 ) 5 +O(h 6 1), C n on vakio, ei riipu h:sta, y(t n +2h 1 ) = y 2 +2C n h 5 1 +O(h 6 1) Tiedetään, että Runge-Kutta menetelmän virhe e n käyttäytyy kuten Ch 5. Merkitään e n := 2C n h 5 1, jolloin vähennyslaskulla saadaan e n 1 15 (y 2 y 1 ), mikä on O(h 6 1) approksimaatio y 2 :n virheelle. Virhe e n voidaan laskea. Jos 1 2 δ 0h 1 e n 2δ 0 h 1, jatketaan samalla askelpituudella h 1. Muuten määrätään uusi askelpituus h 0 siten, että 2C n h 5 0 = δ 0 h 0. Koska niin Siten uudeksi askelpituudeksi saadaan C n y(t n +2h 1 ) y 2 2h 5 1 e n, 2h 5 1 h 4 0 = δ 0 2C n = δ 02h 5 1 2e n = δ 0h 1 h 4 1 e n. ( )1 δ0 h 4 1 h 0 = h 1 e n Jos h 0 < h 1 on edellinen askel uusittava. Virhekontrolloitu Runge-Kutta askel voidaan esittää algoritmina seuraavasti. Proseduuri RK suorittaa yhden askeleen 4. kertaluvun Runge-Kutta menetelmällä. 183
procedurev K_RK(t0, y0, h, delta0) do call RK(t0,y0,2 h,y1) call RK(t0, y0, h, ytemp) call RK(t0+h,ytemp,h,y2) err := (y2 y1)/15 if(0.5 delta0 h <= err.and.err <= 2 delta0 h)then t0 t0+2 h y0 y2 return end if h0 h delta0 h/err) 0.25 if(err <= 2 delta0 h)then t0 t0+2 h y0 y2 h h0 return else h h0 end if end do end procedurevk_rk Huomautus 8.6. Virhe-estimaattoria y 2 y 1 voidaan käyttää parantamaan tarkkuutta. y(t+2h) = y 2 + 1 15 (y 2 y 1 )+O(h 6 ) 8.6 Moniaskelmenetelmät Edellä esitellyille menetelmille, ns. yksiaskelmenetelmille on ominaista se, että ne eivät käytä hyväksi mitään informaatiota edellisistä askelistaan. Menetelmät aloittavat siis "alusta"joka askeleella. Seuraavassa tarkastellaan ns. moniaskelmenetelmiä, joille on ominaista se, että y n :n lisäksi käytetään hyväksi arvoja y n 1, y n 2,... määrättäessä arvoa y n+1. Luontevan lähtökohdan moniaskelmenetelmille tarjoaa numeerinen integrointi. Tunnetusti on y(t n+1 ) = y(t n k )+ tn+1 t n k f(t,y(t))dt Valitsemalla esimerkiksi k = 1 ja käyttämällä Simpsonin integrointikaavaa saadaan y n+1 = y n 1 + h 3 (f(t n 1,y n 1 )+4f(t n,y n )+f(t n+1,y n+1 ))+O(h 5 ), n 1 (8.13) Koska y n+1 pitää laskea epälineaarisesta yhtälöstä, ei näin saatu kaava ole kovin käyttökelpoinen ilman hyvää alkuarvausta y n+1 :lle. Sellainen voidaan laskea esimerkiksi valitsemalla k = 3 ja käyttämällä avointa Newton-Cotesin kaavaa, jolloin saadaan y n+1 = y n 3 + 4h 3 (2f(t n 2,y n 2 ) f(t n 1,y n 1 )+2f(t n,y n )) n 3 (8.14) 184
Edelliset kaksi kaavaa määrittelevät ns. Milnen menetelmän: yn+1 E = y n 3 + 4h 3 (2f(t n 2,y n 2 ) f(t n 1,y n 1 )+2f(t n,y n )) yn+1 K = y n 1 + h 3 (f(t n 1,y n 1 )+4f(t n,y n )+f(t n,yn+1)) E (8.15) Milnen menetelmä on ns. ennustus-korjaus-menetelmä (predictor-corrector), jossa y E n+1 on avoimella kaavalla laskettu ennuste ja y K n+1 suljetulla kaavalla laskettu korjaus. Korjausiteraatio voidaan tarvittaessa tehdä useampaan kertaan. Huomautus 8.7. Kaavasta (8.14) nähdään, että Milnen menetelmä edellyttää ratkaisun tuntemista pisteissä t n 3,t n 2,t n 1,t n. Tämä vaikeuttaa menetelmän käynnistämistä. Ensimmäiset askeleet onkin tehtävä jollakin yksiaskelmenetelmällä. Samoin askelpituuden vaihtaminen on paljon hankalempaa kuin yksiaskelmenetelmissä. Ehkä yleisimmin käytettyjä ennustus-korjaus-menetelmiä ovat ns. Adams-Bashforth- Moulton-menetelmät, jotka johdetaan lähtien integraaliesityksestä y n+1 = y n + tn+1 t n f(t,y(t))dt Funktion f sijasta integroidaan sen polynomiapproksimaatiota, joka on määrätty käyttäen jo tunnettuja f(t k,y k ):n arvoja pisteissä (t k,y k ),k = n,n 1,n 2,...,n p (ennustus osalle) tai k = n+1,n,n p+1 (korjaus osalle). Yksinkertaisimmat Adams- Bashforth-kaavat tai eksplisiittiset moniaskelmenetelmät: p = 0 : y n+1 = y n +hf n +O(h 2 ) (Euler!) (8.16) p = 1 : y n+1 = y n + h 2 (3f n f n 1 )+O(h 3 ) (8.17) p = 2 : y n+1 = y n + h 12 (23f n 16f n 1 +5f n 2 )+O(h 4 ) (8.18) Vastaavat Adams-Moulton-korjauskaavat tai implisiittiset moniaskelmenetelmät: p = 0 : y n+1 = y n +hf n+1 +O(h 2 ) (implisiittinen Euler!) (8.19) p = 1 : y n+1 = y n + h 2 (f n+1 +f n )+O(h 3 ) (Crank-Nicholson-, puolisuunnikasmenetelmä) (8.20) p = 2 : y n+1 = y n + h 12 (5f n+1 +8f n f n 1 )+O(h 4 ) (8.21) 8.7 Diffrentiaaliyhtälön ja ratkaisumenetelmän stabiilisuus 8.7.1 Differentiaaliyhtälön stabiilisuudesta Tarkastellaan aluksi DY:n stabiilisuutta, sillä jos DY ei ole stabiili, niin sen ratkaiseminen millä tahansa numeerisella menetelmällä on kyseenalaista. Tarkastellaan, miten 185
alkuarvotehtävän y = f(t,y) y(a) = s ratkaisu käyttäytyy, kun häiritään sen alkuarvoa. Tarkka ratkaisu on funktio y = y(t,s), mikä riippuu alkuarvosta s. Esimerkiksi yhtälöllä y = y y(a) = s on ratkaisuna y = se (t a), mikä riippuu alkuarvosta y(a) = s, ks. kuva (3). Jos oletetaan, että alku-arvossa s tehdään pyöristysvirhe, niin numeerinen ratkaisu tulee eroamaan huomattavasti oikeasta ratkaisusta, vaikka laskettaessa ei tehtäisi mitään muita virheitä. Tietysti käytännössä virheitä tulee myös numeerisen menetelmän jokaisella askeleella, joten alussa tehty pyöristysvirhe moninkertaistuu. Tarkastellaan seuraavaksi yhtälöä y = y y(a) = s millä on t:n suhteen suppeneva ratkaisujoukko y = se (t a), ks. kuva (3). 11.0 9.9 8.8 7.7 6.6 4 1.0 0.9 0.8 0.7 0.6 y 5.5 y = Se (t-a) y 0.5 4 y = Se - (t-a) 4.4 3 0.4 3.3 2.2 2 0.3 0.2 3 2 1.1 1 0.1 1 0.0 0.0 0.3 0.6 0.9 1.2 1.5 1.8 2.1 2.4 2.7 3.0 t 0.0 0.0 0.3 0.6 0.9 1.2 1.5 1.8 2.1 2.4 2.7 3.0 t Kuva 3: Ratkaisut y = se t ja y = se t (a = 0). Vaikka siis alkuarvossa tehtäisiinkin pieni pyöristysvirhe, ei ero tarkasta ratkaisusta ole kovin suuri, kun t. Tarkastellaan sitten, miten kaksi edellä kuvattua tapausta voidaan erottaa toisistaan? Tarkastellaan kahta lähekkäistä ratkaisua, jotka vastaavat alkuarvoja s ja s + h. Kirjoittamalla ratkaisu Taylorin sarjaksi, saadaan y(t,s+h) = y(t,s)+h δ δs y(t,s)+ 1 δ2 h2 2 δs 2y(t,s)+, 186
joten y(t,s+h) y(t,s) h δ δs y(t,s). Ratkaisun hajaantuminen tarkoittaa sitä, että lim y(t,s+h) y(t,s) =, t joten lim δ t δs y(t,s) =. Osittaisderivaatan laskemiseksi, tarkastellaan differentiaaliyhtälöä δ y(t,s) = f(t,y(t,s)). δt Osittaisderivoimalla se s:n suhteen, saadaan: joten δ δ δsδt y(t,s) = δ δs f(t,y(t,s)), δ δ δtδs y(t,s) = f y(t,y(t,s)) δ δs y(t,s)+f t(t,y(t,s)) δt δs (8.22) missäδt/δs = 0, koskatei riipus:stä. Josson annettu ja merkitäänu(t) = (δ/δs)y(t,s) ja q(t) = f y (t,y(t,s)), niin yhtälöstä (8.22) saadaan: u = qu. (8.23) Yhtälön ratkaisu on u(t) = ce Q(t), missä Q on q:n määräämätön integraali (antiderivaatta). Ehto lim u(t) = toteutuu jos lim Q(t) =, mikä puolestaan toteutuu t t jos q(t) on positiivinen ja rajoitettu, sillä jos f y = q > δ > 0. Q(t) = t a q(θ)dθ > t a δdθ = δ(t a) t, Edellisen nojalla saadaan DY:n stabiilisuudelle ehto: Jos f y < δ jollekin δ > 0, niin DY on stabiili. 8.7.2 Ratkaisumenetelmien stabiilisuudesta Karkeasti voidaan sanoa, että numeerinen menetelmä on ehdottomasti stabiili, jos kiinteällä h, ratkaisu y n säilyy rajoitettuna, kun t n +. Kyseessä on siis ratkaisun asymptoottinen käyttäytyminen. Stabiilisuuden määräämiseksi tarkastellaan Cauchy probleemaa, mitä kutsutaan tässä yhteydessä testiprobleemaksi: y (t) = λy(t), t > 0, y(0) = 1, missä λ C ja y(t) = e λt. Mikäli Re(λ) < 0, niin lim y(t) = 0. t + (8.24) 187
Määritelmä 8.1. Differentiaaliyhtälön ratkaisumenetelmä on ehdottomasti stabiili (A-stabiili), jos sen antamalle testiyhtälön (8.24) ratkaisujonolle pätee: y n 0, kun t n +, (8.25) kaikille λ C siten, että Re(λ) < 0 ja kaikille askelpituuksille h 0. Mikäli edellinen on voimassa vain osalle kompleksitason pisteitä λh, niin sanotaan, että ratkaisumenetelmä on ehdollisesti stabiili. Numeerisen menetelmän stabiilisuusalue on kompleksitason osajoukko: A = z = λh C : yhtälö (8.25) toteutuu } Tarkastellaan vielä Eulerin menetelmän stabiilisuutta. Kun johdettiin virhettä Eulerin menetelmälle oletettiin, että y(t n ) = y n, mikä pitää paikkansa vain ensimmäisellä askeleella. Yleisessä tapauksessa virheelle saadaan E n+1 (h) = y(t n+1 ) y n+1 }} kok.virhe t n+1 :ssä = y(t n ) y n +h [ f(t n,y(t n )) f(t n,y n ) ] } } virhe askeleella n + e }} n, paikallinen virhe missä e n = O(h 2 ). Linearisoimalla virhe askeleella n, ts. kirjoittamalla saadaan h [ f(t n,y(t n )) f(t n,y n ) ] = hf y (t n,ξ)(y(t n ) y n ), ξ ]y n,y(t n )[ E n+1 (h) = ( 1+hf y (t n,ξ) ) (y(t n ) y n ) + e }} n, }} kok.virhe t n :ssä paikallinen virhe missä ( 1+hf y (t n,ξ) ) on virheen vahvistumiskerroin. Esimerkki 8.9. Tarkastellaan tehtävän y = 100y +100 y(0) = y 0 ratkaisemista Eulerin menetelmällä. Tehtävän tarkka ratkaisu on y(t) = (y 0 1)e 100t + 1 (stabiili). Eulerin menetelmä antaa: y k+1 = y k +h( 100y k +100) = (1 100h)y k +100h, Rekursiolla saadaan y k = (y 0 1)(1 100h) k +1. Jos y 0 = 2 y(t) = e 100t +1 y k (t) = (1 100h) k +1 Jos h > 0.02 y k (t) on epästabiili. 188
Huomautus 8.8. Kokonaisvirheen lausekkeesta havaitaan, että kun 1+hf y < 1 Eulerin menetelmän kokonaisvirhe ei kasva, jos h on valittu siten, että 1+hf y > 1 menetelmä on epästabiili, väli 2 < hf y < 0 on Eulerin menetelmän stabiilisuusväli. jos varsinainen DY on epästabiili, ts. f y > 0, niin tabiilisuusvaatimus ei toteudu millään h:n arvolla. 8.7.3 Eulerin menetelmän stabiilisuusväli Kun sovelletaan Eulerin menetelmää (8.16) testiongelman (8.24) ratkaisemiseen, niin saadaan y n+1 = y n +hλy n, kun n > 0 ja y 0 = 1. Rekursiivisesti etenemällä saadaan y n = (1+hλ) n, n > 0. Ehto (8.25) toteutuu jos ja vain jos 1+hλ < 1, ts. hλ on yksikköympyrässä, minkä keskipiste on (-1,0). Ehto toteutuu, mikäli hλ C := z C : Re(z) < 0} ja 0 < h < 2Re(λ) λ 2. (8.26) Esimerkki 8.10. Cauchy tehtävälle y (t) = 5y(t) y(0) = 1 suppenemisehto (8.26) toteutuu, kun 0 < h < 2/5. 8.7.4 Implisiittisen Eulerin menetelmän stabiilisuusväli Kun sovelletaan implisiittistä Eulerin menetelmää (8.19) testiongelman (8.24) ratkaisemiseen, niin saadaan y n = y n 1 +hf(t n,y n ) = y n 1 +hλy n ja edelleen y n = y n 1 1 hλ = y n 2 (1 hλ)... = y 0 2 (1 hλ) n, n 0. Siten, y n 0 1 hλ > 1 ja ehto (8.25) toteutuu jos ja vain jos hλ ei kuulu yksikköympyrään, minkä kp on (1,0). Menetelmä suppeenee siis kaikilla askelpituuksilla h. 189
8.7.5 Crank-Nicolsonin menetelmän stabiilisuusväli Kun sovelletaan Crank-Nicolsonin menetelmää (8.20) testiongelman (8.24) ratkaisemiseen, niin saadaan y n = y n 1 + h 2 (λy n +λy n 1 ) y n = Jälleen (8.25) toteutuu kaikilla hλ C. [(1+ 12 λh )/( 1 1 2 λh )] n, n 0. 8.7.6 Heun menetelmän stabiilisuusväli Kun sovelletaan Heun menetelmää (8.11) testiongelman (8.24) ratkaisemiseen, niin saadaan y n+1 = y n + h 2 (f n +f(t n+1,y n +hf n )) = y n + h 2 (λy n +f(t n+1,y n +hλy n )) = y n + h 2 (λy n +λ(y n +hλy n )) ] n y n = [1+hλ+ (hλ)2, n 0. 2 Jos rajoitutaan reaaliakseliin, niin Heun menetelmän stabiilisuusväi on sama kuin Eulerin menetelmällä. Huomautus 8.9. Menetelmä on A-stabiili jos A C = C. Ts., jos Re(λ) < 0, niin ehto (8.25) pätee haikille h. Implisiittinen Euler ja Crank-Nicolson menetelmät ovat A-stabiileja mutta Euler ja Heun menetelmät ovat ehdollisesti stabiileja. Ei kuitenkaan päde, että kaikki implisiittiset menetelmät olisivat A-stabiileja. Toisaalta, ei ole olemassa eksplisiittistä A-stabiilia menetelmää. 8.8 Differentiaaliyhtälöryhmien ratkaisemisesta Edellä esitettyjen menetelmien soveltaminen DY-ryhmille on suoraviivaista. Tarkastellaan yhtälöryhmää y = f(t,y) y(t 0 ) = ỹ 0 (8.27) missä y(t) = [ ] u(t), y (t) = v(t) [ ] u (t) v, f(t,y) = (t) 190 [ ] f1 (t,u,v), ỹ 0 = f 2 (t,u,v) [ ] u 0 v 0
Esimerkiksi Eulerin menetelmä saa nyt muodon u n+1 = u n +hf 1 (t,u n,v n ) v n+1 = v n +hf 2 (t,u n,v n ) Jokaista komponenttia lasketaan samalla askelpituudella. Vastaavasti yleinen m:n asteen Taylorin menetelmä voidaan kirjoittaa: y(t+h) = y+hy (t)+ h2 2 y (t)+...+ hm m! y(m) (t). 8.8.1 Kankea DY-ryhmä Yhtälöryhmiä ratkaistaessa ongelmia aiheuttavat ns. kankeat yhtälöryhmät (stiff system). Tarkastellaan lineaarista differentiaaliyhtälöryhmää y = Ay y(0) = y 0 (8.28) missä A on n n matriisi, jonka alkiot ovat vakioita. Oletetaan, että A:lla on n erisuurta ominaisarvoa λ i C,i = 1,...,n. Tällöin ratkaisut on muotoa n y i (t) = γ ij e λjt, i = 1,...,n; γ ij C. j=1 Yhtälöryhmän ratkaisumenetelmä on A-stabiili, jos tehtävän (8.28) ratkaisu toteuttaa: y(t) 0 kun t (8.29) Ehto (8.29) toteutuu jos kaikki matriisin A ominaisarvojen reaaliosat ovat negatiivisia, sillä e λ jt = e Reλ jt [ cos(imλ j )+isin(imλ j ) ] 0, kun t. Todetaan, että jos jollakin ominaisarvolla reaaliosa on positiivinen, niin ratkaisun komponentit yleensä lähenevät ±. Sovelluksissa tämä ilmentää ei-toivottua käyttäytymistä. Tarkastellaankin siksi tapausta, jossa kaikille ominaisarvoille on voimassa Reλ i < 0. Jos Reλ i >> Imλ i, häviää termi e λ it nopeasti. Jos Imλ i >> Reλ i, ilmenee tämä suuritaajuisena värähtelynä. Huomautus 8.10. Koska A:lla on n eri ominaisarvoa on se diagonalisoituva, ts. y = Ay z = Λz, missä Λ on diagonaalimatriisi. Tällöin skalaariyhtälön stabiilisuusanalyysiä voidaan soveltaa jokaiseen yhtälöön erikseen ja, jos h toteuttaa ehdon hλ 1,hλ 2,...,hλ n A, niin yhtälöryhmän ratkaisumenetelmä on sabiili. Vaikka edellä esittettyä stabiilisuusteoriaa ei voida yleistää yleiselle epälineaariselle yhtälöryhmälle (8.27), niin tavallisesti asetetaan k:n askeleen pituudelle h k ehto h k λ k,1, h k λ k,2,...,h k λ k,n A, missä luvut λ k,1, λ k,2,...λ k,n ovat Jacobin matriisin J(y k ) = f(t k,y k ) ominaisarvot. y Käytäntö perustuu epälineaarisen yhtälön lokaaliin linearisointiin. 191
Jos käytetään numeerista menetelmää, millä on rajoitettu stabiilisuusväli, niin askelpituus h riipuu kerroinmatriisin A moduuliltaan (itseisarvoltaan) suurimmasta ominaisarvosta. Toisaalta, mitä suurempi on moduuli, sitä nopeammin (ajallisesti) ratkaisun ko. komponentti häviää. Ts. tilanne on paradoksaalinen siinä mielessä, että pitää käyttää lyhyttä askelpituutta, vaikka tarkka ratkaisu käyttäytyisikin jostain ajanhetkestä lähtien hyvin tasaisesti. Määritelmä 8.2. Oletetaan, että σ Reλ j (t) τ, j = 1,...,n ja määrittellään ns. kankeuskerroin S(t) = σ/τ. Alkuarvotehtävää sanotaan kankeaksi välillä [a, b], jos kaikilla t [a, b] pätee Reλ i (t) < 0, i = 1,2,...,n, S(t) >> 1. Edellinen määritelmä esitetään usein myös muodossa: DY-ryhmä on kankea, jos sitä approksimoitaessa ehdollisesti stabiililla menetelmällä tarvitaan stabiilisuuden vuoksi hyvin pieni askelpituus suhteessa tarkan ratkaisun sileyteen. Tämän vuoksi implisiittiset menetelmät, kuten moniaskelmenetelmät tai Runge-Kutta menetelmät sopivat, absoluuttisesti stabiileina menetelminä, paremmin kankean DYryhmän ratkaisemiseen. Seuraavassa esimerkissä on tarkasteltu Eulerin menetelmän käyttäytymistä kankean tehtävän ratkaisussa. Esimerkki 8.11. Tarkastellaan esimerkkinä alkuarvotehtävää y 1(t) = 2000y 1 (t)+999.75y 2 (t)+100.25, y 1 (0) = 0, y 2(t) = y 1 (t) y 2 (t), y 2 (0) = 2. (8.30) Tehtävän Jacobiaani on J(t,y(t)) = ( ) 2000 999.75 1 1 ja sen ominaisarvot ovat λ 1 = 2000.5, λ 2 = 0.5. Tehtävän analyyttinen ratkaisu on y 1 (t) = 1 1.499875e 0.5t +0.499875e 2000.5t y 2 (t) = 1 2.99975e 0.5t 0.00025e 2000.5t Kummankin ratkaisukomponentin jälkimmäinen eksponenttifunktiotermi (nopeasti häviävä osa) on merkityksettömän pieni pisteen t = 0.002 jälkeen kun taas ensimmäiset ekponenttifunktiotermit häviävät vasta pisteen t = 10 jälkeen. Eulerin menetelmän stabiilisuusvaatimuksesta, λ i h A saadaan, että h < 10 3. Kuvassa 4 on esitetty tehtävän (8.30) ratkaisu välillä t [0,5] eri h:n arvoilla. Jos askelpituus on liian suuri (4(a)), niin ratkaisu divergoi. Askelpituudella h 10 3 (4(b)-4(d)) ratkaisu konvergoi. 192
18.2 1.2 14.2 10.1 Euler approx., n=4997, h > 0.001 tarkka ratkaisu 0.6-0.1 y y 6.1 2.0-0.7-1.4 Euler approx., n=5000, h = 0.001 tarkka ratkaisu -2.0 0.0 0.6 1.1 1.7 2.2 2.8 3.3 3.9 4.4 5.0 t (a) -2.0 0.0 0.6 1.1 1.7 2.2 2.8 3.3 3.9 4.4 5.0 t (b) 1.2 1.2 0.6 0.6-0.1-0.1 y y -0.7-0.7-1.4 Euler approx., n=5010, h < 0.001 tarkka ratkaisu -1.4 Euler approx., n=5100, h < 0.001 tarkka ratkaisu -2.0 0.0 0.6 1.1 1.7 2.2 2.8 3.3 3.9 4.4 5.0 t (c) -2.0 0.0 0.6 1.1 1.7 2.2 2.8 3.3 3.9 4.4 5.0 t (d) Kuva 4: Diffrentaaliryhmän (8.30) ratkaisu eri askelpituuksilla. Tämän kaltaisia kankeita tehtäviä joudutaan ratkaisemaan mallinnettaessa kemiallisia reaktiota, joissa osa aineista reagoi nopeasti (katalyytit), mutta itse tutkittavat reaktiot ovat hitaita. Kankeiden differentiaaliyhtälöryhmien ratkaisemisen hankaluus johtuu siitä, että stabiilisuuden säilyttämiseksi askelpituus tulee yleensä määrätä itseisarvoltaan suurimman ominaisarvon mukaan. Huomautus 8.11. Yleisellä alkuarvotehtävällä on samanlaisia taipumuksia, jos f:n jacobiaanin J ominaisarvoilla on edellä mainittuja ominaisuuksia, sillä linearisoimalla f pisteessä ŷ saadaan f(t,y(t)) J(t,ŷ)y(t) J(t,ŷ)ŷ +f(t,ŷ). 193