Numeeriset menetelmät TIEA381 Luento 11 Kirsi Valjus Jyväskylän yliopisto Luento 11 () Numeeriset menetelmät 24.4.2013 1 / 37
Luennon 11 sisältö Numeerisesta integroinnista ja derivoinnista Adaptiiviset integrointialgoritmit Moniulotteinen integrointi Numeerinen derivointi Tavallisten differentiaaliyhtälöiden numeriikasta Luento 11 () Numeeriset menetelmät 24.4.2013 2 / 37
Numeerisesta integroinnista 6.5. Automaattiset integrointialgoritmit Matala-asteiset integrointikaavat antavat epätarkkoja tuloksia, jos integroimisväli [a, b] on liian pitkä. Matala-asteisia kaavoja voidaan käyttää tehokkaasti, jos integroimisväli jaetaan osaväleihin, joissa integrointi suoritetaan erikseen. Automaattiset integrointialgoritmit hakevat itse osavälin pituuden h, joka antaa halutun tarkkuuden, ts. Käyttäjä Asettaa tarkkuusvaatimuksen ε. Integrointialiohjelma Suorittaa integroinnin halutulla tarkkuudella. Luento 11 () Numeeriset menetelmät 24.4.2013 3 / 37
6.5. Automaattiset integrointialgoritmit Esim. automaattisesta integrointialgoritmista Rombergin menetelmä on ekstrapolaatiomenetelmä, jossa integraali lasketaan ensin mielivaltaisella osavälin pituudella h ja sen jälkeen tämän puolikkaalla. Tämän jälkeen käytetään Richardsonin ekstrapolaatiota, jolloin muodostetaan lineaarikombinaatio edellä saaduista likiarvoista. Integroimisväli on jaettu osaväleihin, joilla integrointi suoritetaan erikseen Menetelmässä käytetään yhtä integr.kaavaa ja samaa osavälin pituutta koko välillä [a, b]. Menetelmä hakee osavälin pituuden h, joka antaa halutun tarkkuuden. Luento 11 () Numeeriset menetelmät 24.4.2013 4 / 37
6.5. Automaattiset integrointialgoritmit 6.5.2 Adaptiiviset integrointialgoritmit Adaptiivinen integrointialgoritmi Käyttää yhtä tai useampaa alkeellista integrointikaavaa ja Määrää automaattisesti osavälien pituudet siten, että tulos täyttää ennalta asetetun tarkkuusvaatimuksen. Erilaisia askelpituuksia käytetään integroimisalueen eri osissa: pitkä askel, missä integroitava funktio on tasainen ja lyhyempi askel muualla. Tällä tavalla pyritään saamaan haluttu tarkkuus mahdollisimman vähällä laskentatyöllä. Luento 11 () Numeeriset menetelmät 24.4.2013 5 / 37
6.5. Automaattiset integrointialgoritmit 6.5.3 Yksinkert. adaptiivinen integrointialgoritmi Väli [a, b] jaetaan osaväleihin [x i, x i+1 ], h i = x i+1 x i. Kullakin osavälillä käytetään kahta eri integroimissääntöä integraalin I i = xi+1 x i f (x) dx laskemiseen. Tuloksina saadaan approksimaatiot P i ja Q i. Vertaamalla approksimaatioita P i ja Q i saadaan arvio näiden tarkkuudelle. Jos tarkkuus on hyväksyttävissä, otetaan näista toinen integraalin arvoksi tällä osavälillä. Jos tarkkuus ei ole hyväksyttävä, osaväli puolitetaan edelleen ja prosessi toistetaan osavälin puolikkaissa. Luento 11 () Numeeriset menetelmät 24.4.2013 6 / 37
Esimerkki 6.5. Automaattiset integrointialgoritmit I i = xi+1 Valitaan P i ja Q i siten, että x i f (x) dx, h i = x i+1 x i P i : sovelletaan jotakin integr.sääntöä osavälillä [x i, x i+1 ] Q i : sovelletaan samaa integroimissääntöä puolittamalla osavälin pituus Oletetaan, että I i P i Ch p+1 i, missä p on tunnettu ja C on tuntematon vakio. Tällöin I i Q i C2 p h p+1 i ja eliminoimalla C saadaan P i :n ja Q i :n virheille yhteys I i Q i 1 2 p (I i P i ). (1) Luento 11 () Numeeriset menetelmät 24.4.2013 7 / 37
Esimerkki jatkuu Edelleen 6.5. Automaattiset integrointialgoritmit Q i I i 1 2 p 1 (P i Q i ). Osaväli on tarpeeksi lyhyt, jos on voimassa 1 2 p 1 P i Q i h ( i b a ε P i Q i 2p 1 b a εh i Jos koko väli [a, b] on jaettu n:ään osaväliin, jolla tämä on voimassa, on ) I := b a f (x) dx Q = n Q i. i=1 Luento 11 () Numeeriset menetelmät 24.4.2013 8 / 37
Esimerkki jatkuu 6.5. Automaattiset integrointialgoritmit Lisäksi Q I = n (Q i I i ) i=1 1 2 p 1 i=1 n Q i I i i=1 n P i Q i 1 2 p 1 2p 1 n b a ε h i = ε. i=1 Luento 11 () Numeeriset menetelmät 24.4.2013 9 / 37
6.5. Automaattiset integrointialgoritmit 6.5.4 Simps. sääntöön perustuva adapt. men. Simpsonin säännössä virhe yhdellä osavälillä on muotoa h 5 f (4) (ξ)/90, ξ [x 0, x 2 ]. Annetaan alkuarvo osavälin pituudelle h 0 = (b a)/4n ja tarkkuudelle ε. Määrätään integraalin arvo Simpsonin säännöllä. a+4h0 a f (x) dx Määrätään likiarvo derivaatalle etenevän differenssin avulla f (4) (a + 2h 0 ) 4 f 0 h 4 0 Luento 11 () Numeeriset menetelmät 24.4.2013 10 / 37
6.5. Automaattiset integrointialgoritmit Simps. sääntöön perustuva adapt. men. jatkuu virhe = 2 h5 0 90 f (4) (ξ) 2 h5 0 4 f 0 90 h0 4 2 h0 90 4 f 0 ε (b a)/4h 0 eli 4 f 0 180ε b a. (2) Jos (2) on voimassa, on tarkkuus välillä [a, a + 4h 0 ] riittävä. Asetetaan a := a + 4h 0. Jos (2):n vasen puoli on alle 1/16 oikea puoli, asetetaan h 0 := 2h 0. Jos (2) ei ole voimassa, asetetaan h 0 := h 0 /2 ja uusitaan integrointi välillä [a, a + 4h 0 ]. Näin jatketaan kunnes koko väli [a, b] on integroitu. Luento 11 () Numeeriset menetelmät 24.4.2013 11 / 37
6.5. Automaattiset integrointialgoritmit Simps. sääntöön perustuva adapt. men. jatkuu Algoritmi 1. Laske a+4h 0 a f (x) dx Simpsonin säännöllä 2 osassa 2. Laske 4 f 0. 3. Jos - (2) voimassa, siirry seuraavalle osavälille: a := a + 4h 0. - 4 f 0 1 180ε 16 b a, tuplaa osavälin pituus: h 0 := 2h 0. - (2) ei voimassa, puolita osavälin pituus h 0 := h 0 /2 Palaa kohtaan 1. Jatka, kunnes koko väli [a, b] on käyty läpi. Luento 11 () Numeeriset menetelmät 24.4.2013 12 / 37
6.7 Moniulotteinen integrointi 6.7 Moniulotteinen integrointi Numeerinen integrointi suoritetaan useammassa ulottuvuudessa periaatteessa samalla tavoin kuin yhdessäkin ulottuvuudessa: I i A i f (x (i) ) Joukko jonka yli integroidaan voi kuitenkin olla hyvin monimutkainen jo kahdessakin ulottuvuudessa. Luento 11 () Numeeriset menetelmät 24.4.2013 13 / 37
6.7 Moniulotteinen integrointi Moniulotteinen integrointi jatkuu Käytännössä numeerinen integrointi tapahtuu kahdessa vaiheessa: integrointialue Ω korvataan yksinkertaisemmalla alueella (esim. monikulmio) Ω ja integroidaan tämän alueen yli otettu integraali numeerisesti: f (x 1,..., x n ) dx 1... dx n f (x 1,..., x n ) dx 1... dx n Ω bω k A i f (x (i) 1,..., x n (i) ). Integroimispisteiden x (i) ja painokertoimien A i arvot määrää alue Ω. i=1 Luento 11 () Numeeriset menetelmät 24.4.2013 14 / 37
6.7 Moniulotteinen integrointi 6.7.1 Yksinkertaisia kaavoja kolmiolle Monimutkaista tasoaluetta voidaan yleensä helposti approksimoida kolmioilla. Olkoon µ(k) kolmion K pinta-ala ja G kolmion painopiste. Tällöin integrointikaava (painopistekaava) f (x, y) dx dy µ(k) f (G) K on tarkka ensimmäisen asteen polynomeille. Jos A, B ja C ovat kolmion sivujen keskipisteet on kaava f (x, y) dx dy µ(k) (f (A) + f (B) + f (C)) 3 K tarkka toisen asteen polynomeille (keskipistekaava). Luento 11 () Numeeriset menetelmät 24.4.2013 15 / 37
6.7.2 Tulointegraalit 6.7 Moniulotteinen integrointi Moniulotteinen integraali voidaan laskea soveltamalla yksiulotteisia menetelmiä peräkkäin kullekin dimensiolle. Esimerkiksi yksiulotteisen k-pisteisen Gaussin ja Legendren kaavan vastine R 2 :ssa on 1 1 ( 1 k ) f (x, y) dx dy A i f (x i, y) dy = 1 1 k [ 1 A i i=1 k i=1 j=1 1 1 ] f (x i, y) dy k A i A j f (x i, x j ), i=1 k i=1 missä A i k A j f (x i, y j ) (A i, x i ) ovat 1-ulott. kaavan painokertoimet ja integr.pisteet. Kaava on tarkka 2k 1-asteisille polynomeille. Luento 11 () Numeeriset menetelmät 24.4.2013 16 / 37 j=1
6.8 Numeerinen derivointi 6.8 Numeerinen derivointi Numeerisella derivoinnilla tarkoitetaan likiarvon laskemista funktion f : R R derivaatalle f ilman derivaatan analyyttistä lauseketta. Jos f :n arvo tunnetaan vain ennaltamäärätyissä pisteissä f :ää voidaan interpoloida esimerkiksi splini-funktiolla ja derivoida interpolantin analyyttinen lauseke. Jos f :n analyyttinen lauseke on käytettävissä on analyyttinen derivointi periaatteessa mekaaninen toimenpide. Numeerinen derivointi on sen sijaan hankalaa, koska yksinkertaiset numeeriset derivointikaavat ovat numeerisesti epästabiileja. Luento 11 () Numeeriset menetelmät 24.4.2013 17 / 37
6.8 Numeerinen derivointi 6.8.1 Derivaattojen yksinkertaiset diff.appr. Olkoon funktion f arvot tunnettu pisteissä x h, x ja x + h. Jos f on äärettömän monta kertaa derivoituva pisteessä x, niin f :lle voidaan muodostaa Taylorin kehitelmät f (x + h) = f (x) + f (x)h + 1 2 f (x)h 2 + 1 6 f (x)h 3 + 1 24 f (4) (x)h +... f (x h) = f (x) f (x)h + 1 2 f (x)h 2 1 6 f (x)h 3 + 1 24 f (4) (x)h... Luento 11 () Numeeriset menetelmät 24.4.2013 18 / 37
6.8 Numeerinen derivointi Derivaattojen yksinkertaiset diff.appr. jatkuu Jättämällä ylemmästä kehitelmästä f (x + h) = f (x) + f (x)h + 1 2 f (x)h 2 + 1 6 f (x)h 3 + 1 24 f (4) (x)h +... pois h:n korkeampia potensseja sisältävät termit, saadaan derivaatalle etenevä differenssiapproksimaatio f (x) f (x + h) f (x) h =: D + (h). Luento 11 () Numeeriset menetelmät 24.4.2013 19 / 37
6.8 Numeerinen derivointi Derivaattojen yksinkertaiset diff.appr. jatkuu Vastaavasti alemmasta kehitelmästä f (x h) = f (x) f (x)h + 1 2 f (x)h 2 1 6 f (x)h 3 + 1 24 f (4) (x)h... saadaan takeneva differenssiapproksimaatio f (x) f (x) f (x h) h =: D (h). Luento 11 () Numeeriset menetelmät 24.4.2013 20 / 37
6.8 Numeerinen derivointi Derivaattojen yksinkertaiset diff.appr. jatkuu Vähentämällä ylemmästä kehitelmästä alempi f (x + h) = f (x) + f (x)h + 1 2 f (x)h 2 + 1 6 f (x)h 3 + 1 24 f (4) (x)h +... f (x h) = f (x) f (x)h + 1 2 f (x)h 2 1 6 f (x)h 3 + 1 24 f (4) (x)h... f (x + h) f (x h) = 0 + 2f (x)h +... ja jättämällä h:n korkeammat potenssit sisältävät termit pois, saadaan keskeisdifferenssiapproksimaatio f (x) f (x + h) f (x h) 2h =: D 0 (h). Luento 11 () Numeeriset menetelmät 24.4.2013 21 / 37
6.8 Numeerinen derivointi Derivaattojen yksinkertaiset diff.appr. jatkuu Vastaavasti voidaan approksimoida korkeamman kertaluvun derivaattoja. Esim. summaamalla yhtälöt f (x + h) = f (x) + f (x)h + 1 2 f (x)h 2 + 1 6 f (x)h 3 + 1 24 f (4) (x)h +... f (x h) = f (x) f (x)h + 1 2 f (x)h 2 1 6 f (x)h 3 + 1 24 f (4) (x)h... f (x + h) + f (x h) = 2f (x) + 0 + f (x)h 2 +... Saadaan keskeisdiff.approksimaatio toiselle derivaatalle f (x) f (x + h) 2f (x) + f (x h) h 2. Luento 11 () Numeeriset menetelmät 24.4.2013 22 / 37
6.8 Numeerinen derivointi Differenssiapproksimaation virhe Differenssiapproksimaatioiden katkaisuvirheelle saadaan seuraavanlaiset arviot: D + (h) f (x) = 1 2 f (x)h + 1 6 f (x)h 2 +... = O(h), D 0 (h) f (x) = 1 6 f (x)h 2 + 1 120 f (5) h 4 +... = O(h 2 ), Siten katkaisuvirhe on etenevälle differenssille luokkaa O(h) ja keskeisdifferenssille O(h 2 ). Analogisesti voidaan johtaa virhearviot muillekin diff.appr.: f (x + h) 2f (x) + f (x h) h 2 f (x) = c 1 h 2 + c 2 h 4 + c 3 h 6 +... = O(h 2 ). Kertoimet c i eivät riipu h:sta. Virhearvioista seuraa, että e h (x) 0, kun h 0. Luento 11 () Numeeriset menetelmät 24.4.2013 23 / 37
6.8 Numeerinen derivointi Differenssiapproksimaation virhe jatkuu Tietokonetoteutuksessa on kuitenkin otettava huomioon pyöristysvirheet. Tarkastellaan keskeisdifferenssiä D 0 (h) = f (x + h) f (x h). 2h Funktion f arvoa ei tunneta tarkasti, ainoastaan sen approksimaatio ˆf, siten että ˆf (x + h) f (x + h) ε ja ˆf (x h) f (x h) ε. Luento 11 () Numeeriset menetelmät 24.4.2013 24 / 37
6.8 Numeerinen derivointi Differenssiapproksimaation virhe jatkuu Differenssiapproksimaation virhe on nyt ˆD 0 (h) D 0 (h) ˆD 0 (h) {}}{ = ˆf (x + h) ˆf (x h) ( D 0(h) {}}{ f (x + h) f (x h) ) 2h = ˆf (x + h) f (x + h) + f (x h) ˆf (x h) 2h ε ε {}}{{}}{ ˆf (x + h) f (x + h) + f (x h) ˆf (x h) 2ε 2h = ε h. 2h Luento 11 () Numeeriset menetelmät 24.4.2013 25 / 37
6.8 Numeerinen derivointi Differenssiapproksimaation virhe Kokonaisvirhe on siten ˆD 0 (h) f (x) ˆD 0 (h) D 0 (h) + D 0 (h) f (x) ˆD 0 (h) D 0 (h) + D 0 (h) f (x) = ε h + 1 6 f (ξ) h 2. ε h, kun h 0 eli yleensä ˆD 0 (h) f (x), kun h 0. Paras h löydetään minimoimalla funktio h:n suhteen. E(h) := ε h + 1 6 f (ξ) h 2 Luento 11 () Numeeriset menetelmät 24.4.2013 26 / 37
6.8 Numeerinen derivointi 6.8.2 Richardsonin ekstrapolaatiomenetelmä Tarkastellaan keskeisdifferenssiä f (x + h) f (x h) D 0 (h) = = f (x) + b 1 h 2 + O(h 4 ). 2h Kerrointa b 1 ei käytännössä tunneta, mutta se ei riipu h:sta. Puolittamalla h saadaan D 0 ( h 2 ) = f (x) + b 1 ( h 2 )2 + O(h 4 ) = f (x) + 1 4 b 1h 2 + O(h 4 ). Eliminoimalla vakio b 1 saadaan D R (h) := 4 3 D 0( h 2 ) 1 3 D 0(h) = f (x) + O(h 4 ). Näin on saatu f (x):lle O(h 4 )-approksimaatio. Prosessia voitaisiin jatkaa edelleen kuten Romberg-integroinnissa. Luento 11 () Numeeriset menetelmät 24.4.2013 27 / 37
6.8 Numeerinen derivointi Vakion b 1 eliminointi Keskeisdifferenssi Puolittamalla h saadaan D 0 (h) = f (x) + b 1 h 2 + O(h 4 ). (3) D 0 ( h 2 ) = f (x) + 1 4 b 1h 2 + O(h 4 ) 4 4D 0 ( h 2 ) = 4f (x) + b 1 h 2 + O(h 4 ) väh. (3) 4D 0 ( h 2 ) D 0(h) = 3f (x) + O(h 4 ) : 3 4 3 D 0( h 2 ) 1 3 D 0(h) = f (x) + O(h 4 ) }{{} D R (h) Luento 11 () Numeeriset menetelmät 24.4.2013 28 / 37
Esimerkki 6.12 6.8 Numeerinen derivointi Olkoon f (x) = ln x. Lasketaan likiarvo f (2):lle eri h:n arvoilla käyttäen yksinkertaista tarkkuutta: h D + (h) D (h) D 0 (h) D R (h) 0.2 0.476551 0.526803 0.501677 0.499997 0.1 0.487901 0.512933 0.500417 0.499999 0.05 0.493852 0.506356 0.500104 0.500001 0.01 0.498754 0.501251 0.500003 0.500014 0.001 0.499845 0.500143 0.499994 0.499954 0.0001 0.499487 0.500083 0.499785 0.500182 Luento 11 () Numeeriset menetelmät 24.4.2013 29 / 37
Esimerkki 6.12 jatkuu 6.8 Numeerinen derivointi Minimoimalla funktio E(h) = ε h + 1 6 f (2)h 2, missä ε = 10 7, saadaan keskeisdifferenssille (melkein) optimaaliseksi h:n arvoksi h 0.011. Huomaa, että liian pienellä h pyöristysvirheet dominoivat keskeisdifferenssin virhettä eikä niitä voi kompensoida extrapolaatiolla. Luento 11 () Numeeriset menetelmät 24.4.2013 30 / 37
Luku 7: Tavallisten diff.yhtälöiden numeriikasta 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 11 () Numeeriset menetelmät 24.4.2013 31 / 37
Luku 7: Tavallisten diff.yhtälöiden numeriikasta 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 11 () Numeeriset menetelmät 24.4.2013 32 / 37
Luku 7: Tavallisten diff.yhtälöiden numeriikasta 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 11 () Numeeriset menetelmät 24.4.2013 33 / 37
Luku 7: Tavallisten diff.yhtälöiden numeriikasta 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 11 () Numeeriset menetelmät 24.4.2013 34 / 37
Luku 7: Tavallisten diff.yhtälöiden numeriikasta 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 11 () Numeeriset menetelmät 24.4.2013 35 / 37
Luku 7: Tavallisten diff.yhtälöiden numeriikasta 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 11 () Numeeriset menetelmät 24.4.2013 36 / 37
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 11 () Numeeriset menetelmät 24.4.2013 37 / 37