Numeeriset menetelmät TIEA381 Luento 12 Kirsi Valjus Jyväskylän yliopisto Luento 12 () Numeeriset menetelmät 25.4.2013 1 / 33
Luennon 2 sisältö Tavallisten differentiaaliyhtälöiden numeriikasta Rungen ja Kuttan menetelmät Lineaariset moniaskelmenetelmät Luento 12 () Numeeriset menetelmät 25.4.2013 2 / 33
Luku 7: Tavallisten diff.yhtälöiden numeriikasta Tavalliset differentiaaliyhtälöt ovat usein käytetty matemaattinen malli fysikaalisia ilmiöitä tutkittaessa. tarkastellaan eräitä klassisia ja/tai yleisesti käytettyjä menetelmiä tavallisten differentiaaliyhtälöiden ja differentiaaliyhtälösysteemien ratkaisemiseen. Yhden tuntemattoman funktion ensimmäisen kertaluvun tavallinen differentiaaliyhtälö on muotoa y (t) = f (t, y(t)) (1) eli etsitään funktiota y : R R, jolle (1) on voimassa. Kertaluku kertoo yhtälössä esiintyvän korkeimman y:n derivaatan kertaluvun. Luento 12 () Numeeriset menetelmät 25.4.2013 3 / 33
Tavallisten diff.yht. numeriikasta jatkuu Yhtälöllä y (t) = f (t, y(t)) on yleensä parvi ratkaisuja, jolloin alkuehdolla y(t 0 ) = y 0 kiinnitetään yksikäsitteinen ratkaisu. y 0 y(t) t 0 t Luento 12 () Numeeriset menetelmät 25.4.2013 4 / 33
Tavallisten diff.yht. numeriikasta jatkuu Tarkastellaan ensimmäisen kertaluvun tavallista differentiaaliyhtälöryhmää y ( 1(t) = f 1 t, y1 (t), y 2 (t),..., y m (t) ), y 2(t) ( = f 2 t, y1 (t), y 2 (t),..., y m (t) ),. y m(t) ( = f m t, y1 (t), y 2 (t),..., y m (t) ), missä - t R on riippumaton muuttuja, - funktiot y 1, y 2,..., y m : R R ovat tuntemattomia ja - funktiot f 1, f 2,..., f m : R m+1 R ovat annettuja. (2) Luento 12 () Numeeriset menetelmät 25.4.2013 5 / 33
Tavallisten diff.yht. numeriikasta jatkuu Yhtälöryhmän (2) ratkaisu saadaan yksikäsitteiseksi, kun asetetaan alkuehdot y 1 (a) = ŷ1 0, y 2 (a) = ŷ2 0,. y m (a) = ŷm, 0 missä a R ja ŷ 0 1, ŷ 0 2,..., ŷ 0 m R ovat annettuja. (3) Luento 12 () Numeeriset menetelmät 25.4.2013 6 / 33
Tavallisten diff.yht. numeriikasta jatkuu Ottamalla käyttöön vektorimerkinnät voidaan (2) ja (3) kirjoittaa lyhyesti ja y (t) = f ( t, y(t) ), (4) y(a) = ŷy 0, (5) missä y = (y 1, y 2,..., y m ), f = (f 1, f 2,..., f m ) ja ŷy 0 = (ŷ 0 1, ŷ 0 2,..., ŷ 0 m). Differentiaaliyhtälön (4) ja alkuehdon (5) muodostamaa systeemiä kutsutaan alkuarvotehtäväksi. Luento 12 () Numeeriset menetelmät 25.4.2013 7 / 33
Esimerkki 7.1 Lenkkeilijän (tunnettu) paikka hetkellä t on x(t) = (x 1 (t), x 2 (t)). Hetkellä t = 0 koira on paikassa ŷy 0 ja hetkellä t > 0 paikassa y(t) = (y 1 (t), y 2 (t)). Koira juoksee vakiovauhdilla w = y (t) kohti lenkkeilijää eli koiran nopeusvektori on muotoa josta saadaan vakiolle λ lauseke v(t) = y (t) = λ(x(t) y(t)), λ = w x(t) y(t). Luento 12 () Numeeriset menetelmät 25.4.2013 8 / 33
Esimerkki 7.1 jatkuu Koiran kulkema reitti (s.o. funktiot y 1 ja y 2 ) saadaan ratkaisemalla differentiaaliyhtälöryhmä y x(t) y(t) (t) = w x(t) y(t) y(0) = ŷy 0. Luento 12 () Numeeriset menetelmät 25.4.2013 9 / 33
Tavallisten diff.yht. numeriikasta jatkuu Tarkoituksena on nyt etsiä sellainen funktio y, joka toteuttaa yhtälön y (t) = f ( t, y(t) ), (4) ja ehdon y(a) = ŷy 0. (5) Voidaan todistaa seuraava tulos: Luento 12 () Numeeriset menetelmät 25.4.2013 10 / 33
Lause 7.1 Luku 7: Tavallisten diff.yhtälöiden numeriikasta Oletetaan, että alueessa D R m+1 funktio f on jatkuva ja toteuttaa Lipschitz-ehdon f (t, y) f (t,ȳy) L y ȳy, L 0. Olkoon alkuarvo (a,ŷy 0 ) D annettu. Silloin tehtävällä (4) (5) on yksikäsitteinen, jatkuvasti differentioituva ratkaisu y. Luento 12 () Numeeriset menetelmät 25.4.2013 11 / 33
Huomautus 7.1 Jatkossa ei tehdä eroa differentiaaliyhtälön (m = 1) ja differentiaaliyhtälöryhmän (m > 1) välillä, vaan käytetään aina alkuarvotehtävän lyhyempää muotoa (4) (5). Se, että tarkastellaan vain ensimmäisen kertaluvun yhtälöitä, ei ole mikään rajoitus, sillä korkeamman kertaluvun tavalliset differentiaaliyhtälöt voidaan aina palauttaa edellä esitettyyn muotoon sijoittamalla y 1 = y, y 2 = y, y 3 = y, jne. Luento 12 () Numeeriset menetelmät 25.4.2013 12 / 33
Huomautus 7.1 jatkuu Esimerkiksi tavallinen differentiaaliyhtälö y (m) = f (t, y, y, y, y,..., y (m1) ) voidaan palauttaa differentiaaliyhtälöryhmäksi y 1 = y 2 y 2 = y 3. y m 1 = y m y m = f (t, y 1, y 2,..., y m ). Luento 12 () Numeeriset menetelmät 25.4.2013 13 / 33
Tavallisten diff.yht. numeriikasta jatkuu Olemme siis ratkaisemassa tehtävää y (t) = f ( t, y(t) ), y(a) = ŷ 0. Alkuarvotehtävien numeerisessa ratkaisemisessa määrätään funktiolle y likiarvot pisteissä t j = a + jh (j = 0, 1, 2,... ), missä h on sopiva askelpituus. Jatkossa käytetään merkintöjä y j = y(t j ) ja f j = f (t j, y j ). Luento 12 () Numeeriset menetelmät 25.4.2013 14 / 33
7.1 Rungen ja Kuttan menetelmät 7.1 Rungen ja Kuttan menetelmät Tunnetaan funktion y arvo pisteessä t n eli y n. Määrätään sen arvo pisteessä t n+1 kaavalla missä y n+1 = y n + k 1 = hf (t n, y n ), r w i k i, i=1 i 1 k i = hf (t n + c i h, y n + a ij k j ), 1 < i r. j=1 Määräämällä arvot kertoimille w i, c i ja a ij saadaan erilaisia Rungen ja Kuttan menetelmiä. Luento 12 () Numeeriset menetelmät 25.4.2013 15 / 33
7.1 Rungen ja Kuttan menetelmät Rungen ja Kuttan menetelmät jatkuu Tavoitteena on määrätä kertoimet siten, että virhetermi olisi suuruusluokkaa h p+1 jollain kokonaisluvulla p. Yhdellä askeleella tehdään siis suuruusluokkaa O(h p+1 ) oleva paikallinen virhe. Jotta päästään pisteestä t = a pisteeseen t = b, niin tarvitaan (b a)/h askelta. Pahimmassa tapauksessa kokonaisvirhe on kertaluokkaa O ( (h p+1 ) (b a)/h ) = O(h p ). Sanotaan, että menetelmän kertaluku on p. Luento 12 () Numeeriset menetelmät 25.4.2013 16 / 33
7.1 Rungen ja Kuttan menetelmät Rungen ja Kuttan menetelmät jatkuu + Rungen ja Kuttan menetelmät ovat melko yksinkertaisia ja helppoja ohjelmoida. + ne ovat ns. yksiaskelmenetelmiä, ts. niissä voidaan lähteä liikkeelle suoraan alkuarvosta y 0 = y(a) toisin kuin ns. moniaskelmenetelmissä, jotka täytyy käynnistää. Funktion f arvoja joudutaan laskemaan myös muualla kuin vain pisteissä t j. Funktion arvon laskuja tarvitaan varsinkin korkeamman kertaluvun menetelmissä melko runsaasti. Luento 12 () Numeeriset menetelmät 25.4.2013 17 / 33
7.1 Rungen ja Kuttan menetelmät Rungen ja Kuttan menetelmät jatkuu Yleinen Rungen ja Kuttan menetelmä oli siis muotoa missä r y n+1 = y n + w i k i, i=1 k 1 = hf (t n, y n ), i 1 k i = hf (t n + c i h, y n + a ij k j ), 1 < i r. j=1 Luento 12 () Numeeriset menetelmät 25.4.2013 18 / 33
7.1 Rungen ja Kuttan menetelmät Rungen ja Kuttan menetelmät jatkuu Ehkä tunnetuin Rungen ja Kuttan menetelmä on klassinen neljännen kertaluvun menetelmä, joka on muotoa k 1 = h f (t n, y n ), k 2 = h f (t n + h 2, y n + k 1 2 ) k 3 = h f (t n + h 2, y n + k 2 2 ), k 4 = h f (t n + h, y n + k 3 ) y n+1 = y n + k 1 6 + k 2 3 + k 3 3 + k 4 6 + O(h5 ). Missä siis valittiin w 1 = 1 6, w 2 = w 3 = 1 3, w 4 = 1 6 c 2 = c 3 = 1 2, c 4 = 1, a 21 = 1 2, a 31 = 0, a 32 = 1 2, a 41 = a 42 = 0, a 43 = 1. Luento 12 () Numeeriset menetelmät 25.4.2013 19 / 33
Esimerkki 7.2 7.1 Rungen ja Kuttan menetelmät Ratkaistaan alkuarvotehtävä y (t) = sin(y(t)), y(0) = 1 neljännen kertaluvun Rungen ja Kuttan menetelmällä pisteessä t = 2 eri askelpituuksilla h. Virhe pienenee 1/16 osaan, kun askelpituus puolitetaan (taulukko). h y (h) (2) y (h) (2) y(2) 2 2.635343 0.02056734 1 2.650943 0.00496781 0.5 2.655638 0.00027299 0.25 2.655895 0.00001595 0.125 2.655910 0.00000096 Luento 12 () Numeeriset menetelmät 25.4.2013 20 / 33
7.1.1 Askelpituuden säätämisestä 7.1 Rungen ja Kuttan menetelmät a b Oletetaan, että tarkasteltavan differentiaaliyhtälön ratkaisu on kuvassa esitetyn muotoinen. Voisi luulla, että Kaukana pisteestä t = a, missä ratk. on lähes vakio, voisi käyttää pitkää askelpituutta virheen oleellisesti kasvamatta. y(t) Toisaalta pisteen t = a lähellä saatetaan tarvita hyvinkin pientä askelpituutta. Miten askelpituus olisi valittava? Voisiko sen ehkä määrätä adaptiivisesti? Luento 12 () Numeeriset menetelmät 25.4.2013 21 / 33
7.1 Rungen ja Kuttan menetelmät Askelpituuden säätämisestä jatkuu Yksinkertainen tapa arvioida Rungen ja Kuttan menetelmän paikallista virhettä: Olkoon menetelmän kertaluku p Yhden askeleen menetelmävirhe on T (t, h) Ch p+1. Olkoon y = y(t) tarkka ratkaisu. Oletetaan, että arvo y n on tarkka. - Jos y n+1 = y (h) n+1 on laskettu käyttäen askelpituutta h ja y n+1 = y (h/2) n+1 suorittamalla kaksi askelta askelpituudella h/2, voidaan paikallista menetelmävirhettä arvioida kaavalla T (t n, h) y (h/2) n+1 y (h) n+1 1 2 p. Luento 12 () Numeeriset menetelmät 25.4.2013 22 / 33
7.1 Rungen ja Kuttan menetelmät Askelpituuden säätämisestä jatkuu Jotta pisteestä t n päästään pisteeseen t = b, tarvitaan (b t n )/h askelta. Virhe y (h) (b) y(b) on alle toleranssin ε, jos T (t n, h) εh/(b t n ). Mikäli yo. ehto ei ole voimassa, pitää askelpituutta pienentää. Vastaavasti askelpituutta voidaan kasvattaa, mikäli paikallinen virhe on liian pieni Luento 12 () Numeeriset menetelmät 25.4.2013 23 / 33
7.2 Lineaariset moniaskelmenetelmät 7.2 Lineaariset moniaskelmenetelmät Oletetaan, että tunnetaan funktion y arvot y n, y n+1,..., y n+k 1, missä k on menetelmän askelluku. Määrätään arvo y n+k ratkaisemalla se yhtälöstä k α j y n+j + h j=0 k β j f n+j = 0, (α k 0), (6) j=0 missä α j ja β j ovat tunnettuja kertoimia. (Jatkossa oletetaan yksinkertaisuuden vuoksi, että kerroin α k = 1.) Luento 12 () Numeeriset menetelmät 25.4.2013 24 / 33
7.2 Lineaariset moniaskelmenetelmät Lineaariset moniaskelmenetelmät jatkuu Voidaan erotella kaksi eri tapausta: Jos β k = 0, sanotaan menetelmää eksplisiittiseksi. Tällöin y n+k voidaan laskea suoraan yhtälöstä (6): k α j y n+j + h j=0 k 1 k 1 α j y n+j + α }{{} k y n+k + h j=0 1 j=0 j=0 k β j f n+j = 0 j=0 β j f n+j + h β k }{{} =0 k 1 k 1 y n+k = α j y n+j + h β j f n+j. j=0 f n+k = 0 Luento 12 () Numeeriset menetelmät 25.4.2013 25 / 33
7.2 Lineaariset moniaskelmenetelmät Lineaariset moniaskelmenetelmät jatkuu Jos taas β k 0, sanotaan menetelmää implisiittiseksi. Tällöin y n+k joudutaan ratkaisemaan epälineaarisesta yhtälöstä k 1 k 1 y n+k = α j y n+j + h β j f n+j + hβ k f (t n+k, y n+k ). j=0 j=0 Luento 12 () Numeeriset menetelmät 25.4.2013 26 / 33
7.2 Lineaariset moniaskelmenetelmät Lineaariset moniaskelmenetelmät jatkuu Eri α j, β j, k arvoilla saadaan erilaisia moniaskelmenetelmiä. + Nyt funktion f arvoja tarvitaan vain pisteissä t j. Siten funktionkehitysten määrä jää pienemmäksi. alkuarvon y 0 lisäksi tarvitaan k 1 muuta arvoa y 1, y 2,..., y k 1, jotka täytyy määrätä jollain toisella tavalla (esim. Rungen ja Kuttan menetelmällä). Sanotaan, että moniaskelmenetelmät pitää käynnistää. Luento 12 () Numeeriset menetelmät 25.4.2013 27 / 33
Eulerin menetelmä 7.2 Lineaariset moniaskelmenetelmät Esimerkki eksplisiittisestä menetelmästä: Eulerin menetelmä (k = 1, α 0 = β 0 = 1) 0 0 y n+1 = α j y n+j + h β j f n+j. eli lyhyesti j=0 j=0 y n+1 = y n + hf n. Luento 12 () Numeeriset menetelmät 25.4.2013 28 / 33
7.2 Lineaariset moniaskelmenetelmät 7.2.1 Moniaskelmenetelmien johto Numeerisia integrointikaavoja käyttäen Avoimet Newtonin ja Cotesin kaavat antavat eksplisiittisiä menetelmiä: Olkoon laskettavana integraali b a u(x) dx. Eräs avoin Newtonin ja Cotesin kaava on b a u(x) dx = 4h 3 (2u 0 u 1 + 2u 2 ) + 14 45 h5 u (ξ), missä h = (b a)/4, u j = u(x j ), x j = a + (j + 1)h ja ξ ]a, b[. Luento 12 () Numeeriset menetelmät 25.4.2013 29 / 33
7.2 Lineaariset moniaskelmenetelmät Moniaskelmenetelmien johto jatkuu Sovelletaan tätä välillä [t n, t n+4 ] funktioon y = f, jolloin saadaan y n+4 y n = tn+4 t n y (t) dt 4h 3 (2f n+1 f n+2 + 2f n+3 ). Näin on johdettu moniaskelmenetelmä (k = 4) y n+4 = y n + 4h 3 (2f n+1 f n+2 + 2f n+3 ). Luento 12 () Numeeriset menetelmät 25.4.2013 30 / 33
7.2 Lineaariset moniaskelmenetelmät Moniaskelmenetelmien johto jatkuu Suljetut Newtonin Cotesin kaavat antavat implisiittisiä menetelmiä: Esimerkkinä tarkastellaan integrointikaavaa (Simpsonin sääntö) b a u(x) dx = h 3 (u 0 + 4u 1 + u 2 ) h5 90 u (ξ), missä h = (b a)/2, u j = u(x j ), x j = a + jh ja ξ ]a, b[. Luento 12 () Numeeriset menetelmät 25.4.2013 31 / 33
7.2 Lineaariset moniaskelmenetelmät Moniaskelmenetelmien johto jatkuu Soveltamalla tätä vastaavasti välillä [t n, t n+2 ] funktioon y = f saadaan y n+2 y n = tn+2 t n y (t) dt h 3 (f n + 4f n+1 + f n+2 ). eli moniaskelmenetelmä (k = 2) y n+2 = y n + h 3 (f n + 4f n+1 + f n+2 ). Luento 12 () Numeeriset menetelmät 25.4.2013 32 / 33
7.2 Lineaariset moniaskelmenetelmät Moniaskelmenetelmien johto jatkuu Numeerisia integrointikaavoja käyttäen Avoimet Newtonin ja Cotesin kaavat antavat eksplisiittisiä menetelmiä Suljetut Newtonin Cotesin kaavat antavat implisiittisiä menetelmiä Luento 12 () Numeeriset menetelmät 25.4.2013 33 / 33