Numeerinen integrointi ja derivointi Keijo Ruotsalainen Division of Mathematics
Interpolaatiokaavat Approksimoitava integraali I = b a f(x)dx. Tasavälinen hila: x i = a+ (b a)i n, i = 0,...,n Funktion f(x) interpolaatiopolynomi P n (x) = f(x 0 )+f[x 0,x 1 ](x x 0 )+... + f[x 0,...,x n ](x x 0 ) (x x n 1 ). Integraalin I approksimaatio I n = b a P n(x)dx. Approksimaation virhe I I n = 1 b f (n+1) (ξ x )Π n (n+1)! j=0(x x j )dx. a Keijo Ruotsalainen Matematiikan jaos 2 / 33
Keskipistekaava Interpolaatiopolynomi: P 0 (x) = f( a+b 2 ) = f(x 0). Integroimiskaava on tällöin Lause 5.1 I 0 = b a P 0 (x)dx = (b a)f( a+b 2 ). Olkoon funktio f(x) kaksi kertaa jatkuvasti derivoituva funktio välillä [a, b]. Tällöin keskipistekaavan I 0 (f) = (b a)f(x 0 ) virhe on missä ζ [a, b]. E 0 (f) = 1 24 (b a)3 f (2) (ζ), Keijo Ruotsalainen Matematiikan jaos 3 / 33
Väliarvolause Lauseen todistuksessa tarvitaan seuraavaa lausetta Lause 5.2 Olkoon f(x) jatkuva funktio, ja g(x) funktio, joka ei vaihda merkkiä integroimisvälillä [a, b]. Tällöin on olemassa piste ζ [a, b] siten, että b a b f(x)g(x)dx = f(ζ) g(x)dx. a Keijo Ruotsalainen Matematiikan jaos 4 / 33
Virhekaavan todistus Vakiointerpolaation virhelauseke: x 1 [a, b] f(x) f(x 0 ) = f[x 0,x 1 ](x x 0 )+ 1 2 f (2) (ξ x )(x x 0 )(x x 1 ) b a f[x 0,x 1 ](x x 0 )dx = 0, sillä x 0 on välin keskipiste: Keskipistekaavan virhe: E 0 (f) = 1 2 b x 1 = x 0 E 0 (f) = 1 2 a f (2) (ξ x )(x x 0 )(x x 1 )dx. b a f (2) (ξ x )(x x 0 ) 2 dx. Funktio f (2) (ξ x ) on jatkuva ja g(x) = (x x 0 ) 2 0, joten väliarvolauseen nojalla on ζ [a, b] siten, että E 0 (f) = 1 2 f (2) (ζ) b a (x x 0 ) 2 dx = 1 24 (b a)3 f (2) (ζ). Keijo Ruotsalainen Matematiikan jaos 5 / 33
Puolisuunnikassääntö Interpolaatiopisteet x 0 = a ja x 1 = b. Funktion esitys f(x) = f(x 0 ) f[x 0,x 1 ](x x 0 )+ 1 2 f (2) (ξ x )(x x 0 )(x x 1 ). Integroimiskaava I 1 = b a 2 [f(a)+f(b)] Puolisuunnikassäännön virhe on E 1 (f) = 1 2 b a f (2) (ξ x )(x a)(x b)dx. Keijo Ruotsalainen Matematiikan jaos 6 / 33
Puolisuunnikassäännön virhe Väliarvolauseen nojalla (g(x) = (x a)(x b) 0) on ζ [a, b] s.e. Lause 5.3 E 1 (f) = 1 2 f (2) (ζ) b a (x a)(x b)dx. Olkoon funktio f(x) kaksi kertaa jatkuvasti derivoituva funktio välillä [a, b]. Tällöin puolisuunnikassäännön I 1 (f) = b a 2 [f(a)+f(b)] virhe on E 1 (f) = 1 12 (b a)3 f (2) (ζ), missä ζ [a, b]. Keijo Ruotsalainen Matematiikan jaos 7 / 33
Simpsonin sääntö Interpolaatiopisteet x 0 = a, x 1 = a+b 2, x 2 = b Interpolaatiopolynomi P 2 (x) = f(x 0 )+f[x 0,x 1 ](x x 0 )+f[x 0,x 1,x 2 ](x x 0 )(x x 1 ). Integroimalla saadaan Simpsonin sääntö: I 2 (f) = b a 6 [f(a)+4f(a+b 2 )+f(b)]. Polynomi-interpolaation virhelauseke (x 3 = x 1 ) f(x) P 2 (x) = f[x 0,x 1,x 2 ](x x 0 )(x x 1 )(x x 2 )+ f (4) (ξ x ) Π 3 j=0 4! (x x j), Keijo Ruotsalainen Matematiikan jaos 8 / 33
Simpsonin säännön virhe Oikean puolen kolmannen asteen polynomi on pariton välin [x 0, x 2 ] keskipisteen suhteen. Joten sen integraali on nolla. Jäljelle jäävään virhetermiin voidaan soveltaa väliarvolausetta olettaen, että integroitava funktio on neljä kertaa jatkuvasti derivoituva. virhetermi E 2 (f) = f (4) (ζ) 4! b missä ζ on joku piste integroimisväliltä. a Π 3 j=0 (x x j)dx = (b a)5 2880 f (4) (ζ), Keijo Ruotsalainen Matematiikan jaos 9 / 33
Summattu keskipistekaava Integroimisväli [a, b] n on osavälien lukumäärä. Osavälit [t i,t i+1 ], i = 0,...,n 1, missä Integraali I I = b a t i = a+ ih, h = b a n n 1 f(x)dx = i=0 ti+1 t i f(x)dx. Jokaisella osavälillä sovelletaan keskipistekaavaa b a n 1 f(x)dx = h f(t i + h h3 n 1 )+ f (2) (ξ i ), 2 24 missä ξ i [t i t i+1 ]. i=0 Keijo Ruotsalainen Matematiikan jaos 10 / 33 i=0
Summatun keskipistekaavan virhe Oletus: f(x) on kaksi kertaa jatkuvasti derivoituva, Kaikilla i = 0,...,n 1 Näin ollen min f (2) (x) f (2) (ξ i ) max f (2) (x). x [a, b] x [a, b] n min f n 1 (2) (x) f (2) (ξ i ) n max f (2) (x). x [a, b] x [a, b] i=0 Jatkuva funktio saa kaikki arvot suurimman ja pienimmä arvonsa väliltä, niin on olemassa ξ [a, b] siten, että 1 n 1 f (2) (ξ i ) = f (2) (ξ). n i=0 Keijo Ruotsalainen Matematiikan jaos 11 / 33
Summattu keskipistekaava lause Kaksi kertaa jatkuvasti derivoituvan funktion integraali voidaan laskea summatulla keskipistekaavalla jonka virhelauseke on n 1 I 0,n = h f(t i + h 2 ), i=0 E 0,n = h2 (b a) f (2) (ξ). 24 Keijo Ruotsalainen Matematiikan jaos 12 / 33
Summattu puolisuunnikassääntö Integroimisväli [a,b] jaetaan n:ään osaväliin [t i,t i+1 ], i = 0,...,n 1, t i = a+ih, h = b a n Sovelletaan jokaisella osavälillä puolisuunnikassääntöä. Summattu puolisuunnikassääntö Virhelauseke on I 1,n = h n 1 2 [f(a)+ f(b)+2 f(t i )] i=1 E 1,n = h2 (b a) f (2) (ξ), 12 missä ξ [a, b] on väliarvolauseen nojalla määritelty piste. Keijo Ruotsalainen Matematiikan jaos 13 / 33
Puolisuunnikassäännön koodi function int=puolis(a,b,n,fun) h=(b-a)/n; x=a:h:b; dim=length(x); y=fun(x); if size(y)==1 y=diag(ones(dim))*y; end int=h/2*(y(1)+y(n+1)+2*sum(y(2:n))); return Keijo Ruotsalainen Matematiikan jaos 14 / 33
Summattu Simpson Parillinen määrä osavälejä, ts. n=2m. Sovelletaan Simpsonin sääntöä osaväleillä [t 2i, t 2i+2 ], i = 0,..., m 1. Summattu Simpsonin sääntö Neljästi jatkuvasti derivoituvalle funktiolle on voimassa summattu Simpsonin sääntö: (n=2m) I 2,n = h 3 [f(a)+f(b)+4 m jolle on voimassa virhelauseke i=1 m 1 f(t 2i 1 )+2 f(t 2i )], i=1 E 2,n = h4 (b a) f (4) (ζ), ζ [a, b] 180 Keijo Ruotsalainen Matematiikan jaos 15 / 33
Simpson-koodi function int=simpson(a,b,m,fun) h=(b-a)/m; x=[a:h/2:b]; dim=length(x); y=fun(x); if size(y)==1 y=diag(ones(dim))*y; end int=h/6*(y(1)+2*sum(y(3:2:2*m- 1))+4*sum(y(2:2:2*m))+y(2*m+1)); return Keijo Ruotsalainen Matematiikan jaos 16 / 33
Automaattinen integrointi Tavoite: Integraalin b a f(x)dx likiarvo annetulla toleranssilla ǫ Laskenta-algoritmi tuottaa jonon {I k (f),e k } k=1,...,n, missä Ik on integraalin likiarvo Ek on a posteriori arvio virheelle. Yhdistetään Interpolaatiokaavat In,m(k), missä m(k) = 2 k on käytettävien osavälien lukumäärä Ekstrapolaatioidea Keijo Ruotsalainen Matematiikan jaos 17 / 33
A posteriori virheen arviointi Kaksinkertaistetaan joka askeleella osavälien lukumäärä: I = I n,m + c(ξ)h n+p I = I n,2m + c( ξ)( h 2 )n+p = I n,2m + c( ξ) 2 n+p hn+p, missä p = 2, kun n on parillinen, ja p = 1, kun n on pariton. I I n,2m = c( ξ) 2 n+p hn+p = c( ξ) c(ξ) Ratkaistaan yhtälöstä I 2n+p I n,2m I n,m 2 n+p 1 I I n,2m 2n+p I n,2m I n,m 2 n+p 1 A posteriori virhe-arvio: E k = I n,m(k+1) I n,m(k) 2 n+p. 1 I I n,m 2 n+p I I n,m 2 n+p. I n,2, = I n,2m I n,m 2 n+p 1. Keijo Ruotsalainen Matematiikan jaos 18 / 33
Esimerkki: Automaattinen Simpsonin sääntö Esimerkki Laske integraalin I = 1 0 ln(1+x)dx likiarvo 4:n desimaalin tarkkuudella käyttäen automaattista Simpsonin sääntöä. Ratkaisu: k = 0 : I 2,1 = 1 6 [ln(1)+4ln(1.5)+ ln(2)] = 0.3858346022 k = 1 : I 2,2 = 1 12 [ln(1)+ln(2)+4(ln(1.25)+ln(1.75))+ 2ln(1.5)] = 0.3862595628 Virhe-arvio : E 1 = I 2,2 I 2,1 15 = 0.2833 10 4. Tarkka arvo I = 2ln(2) 1 = 0.3862943611. Todellinen virhe I I 2,2 = 0.347983 10 4. Keijo Ruotsalainen Matematiikan jaos 19 / 33
Euler-Maclaurinin summakaava Formaalisen differentiaalioperaattorin e hd (hd) k =, D = d k! dx avulla k=0 Funktion f(x) Taylorin kehitelmä: (h d dx f(x + h) f(x) = )k f(x) = [e hd 1]f(x). k! Taylorin kehitelmä Bernoullin lukuja: k=1 x e x 1 = B k k=0 k! xk. Luvut B k ovat B 0 = 1, B 1 = 1 2, B 2 = 1 6, B 3 = B 5 = B 7 = = 0, B 4 = 1 30, B 6 = 1 42, B 8 = 1 30,... Keijo Ruotsalainen Matematiikan jaos 20 / 33
Euler-Maclaurinin summakaava Sileän funktion Taylorin kehitelmä f(x) = [e hd 1] 1 (f(x + h) f(x)) = 1 h D 1 [f(x + h) f(x)] 1 [f(x + h) f(x)] 2 B + 2k (2k)! h2k 1 [f (2k 1) (x + h) f (2k 1) (x)] k=1 Derivoinnin käänteisoperaatio on integrointi, joten = D 1 [f(x + h) f(x)] = D 1 [ x+h x D 1 f (t)dt = x+h x x+h x f(t)dt f (t)dt] Keijo Ruotsalainen Matematiikan jaos 21 / 33
Euler-Maclaurinin summakaava Näin saadaan + x+h h [f(x + h)+f(x)] = f(t)dt 2 x B 2k (2k)! h2k [f (2k 1) (x + h) f (2k 1) (x)]. k=1 Soveltamalla kehitelmää summatun puolisuunnikassäännön jokaisella osavälillä saadaan Euler-Maclaurinin summakaava: I 1,n (f) = b a f(x)dx + c k h 2k. k=1 Keijo Ruotsalainen Matematiikan jaos 22 / 33
Ekstrapolaatio Koska Euler-Maclaurinin summakaava on voimassa kaikille n N, niin kaksinkertaistetaan osavälien lukumäärä. Tällöin I 1,2n = b a = I + c 1 h 2 f(x)dx + c k ( h 2 )2k k=1 h 4 h 6 4 + c 2 16 + c 3 64 +... Näin ollen saadaan integraalin approksimaatio 4I 1,2n I 1,n 3 = I + c 2 h4 + c 3 h6 + c 4 h8 +..., jonka virheen asymptoottisen kehitelmän johtava termi on h:n neljäs potenssi. Keijo Ruotsalainen Matematiikan jaos 23 / 33
Rombergin menetelmä Summattu puolisuunnikassääntö parillisella määrällä osavälejä R k,1 = I 1,2 k 1, k = 1,2,3,4,... Kun k 1 k, niin osavälin pituus h h 2. Integraalin I = b a f(x)dx asymptoottiset kehitelmät (k 2): I = R k 1,1 + c 1 h 2 + c 2 h 4 + c 3 h 6 + c 4 h 8 + I = R k,1 + c 1 h 2 Ekstrapolaatioaskel: I = 4I I 3 h 4 h 6 h 8 4 + c 2 16 + c 3 64 + c 4 256 +. = 4R k,1 R k 1,1 3 + c 2 h 4 + c 3 h 6 + c 4 h 8 + Asymptoottisessa kehitelmässä geneeriset vakiot c 2m pienenevät Keijo Ruotsalainen Matematiikan jaos 24 / 33
Romberg Merkitään (k 2): R k,2 = 4R k,1 R k 1,1 3, Edellisen nojalla on kehitelmä I = R k,2 + c 2 h 4 + c 3 h 6 + c 4 h 8 +. Puolittamalla osavälien pituus saadaan kehitelmät jokaiselle k 3. Ekstrapolaatio: I = R k 1,2 + c 2 h 4 + c 3 h 6 + c 4 h 8 + I = R k,2 + c 2 h 4 h 6 h 8 16 + c 3 64 + c 4 256 + R k,3 = 42 R k,2 R k 1,2 4 2, 1 jolle on voimassa virhekehitelmä I = R k,3 + c 3 h 6 + c 4 h 8 + c 5 h 10 +. Keijo Ruotsalainen Matematiikan jaos 25 / 33
Rombergin menetelmä Rombergin menetelmä R k,1 R k,j = I 1,2 k 1 = 4j 1 R k,j 1 R k 1,j 1 4 j 1, k j 2. 1 Virhekehitelmän johtava termi on O(( 1 2 )2n 2 ). Käytännön laskennassa virhettä kontrolloidaan seuraavalla säännöllä: Sääntö Olkoon integroitava funktio on sileä. Tällöin approksimaatiossa R n,n on d oikeata desimaalia, jos R n,n R n 1,n 1 < 1 2 10 d, niin Keijo Ruotsalainen Matematiikan jaos 26 / 33
Rombergin matlab-koodi function int=romberg(a,b,n,fun) for i = 1 : n+ 1 R(i,1) = puolis(a,b,2 (i 1),fun); end for j = 2 : n+ 1 for i = j : n+1 R(i,j) = (4 (j 1) R(i,j 1) R(i 1,j 1))/(4 (j 1) 1); end end int=r; return Keijo Ruotsalainen Matematiikan jaos 27 / 33
Esimerkki Laske integraalin 2 1 ln(x)dx likiarvo Rombergin menetelmällä. Ratkaisu 0.3465735902 0 0 0 0.376019349 0.3858346021 0 0 0.383699509 0.386259562 0.38628789 0 0.3856439099 0.3862920434 0.3862942088 0.3862943090 Keijo Ruotsalainen Matematiikan jaos 28 / 33
1. kertaluvun derivaatan approksimaatio Derivaatan määritelmästä saadaan yksinkertaisin derivointikaava ns. eteenpäin differenssikaava: f (x) = f(x + h) f(x) h + O(h). Derivaatan approksimaatio on funktion arvojen lineaarikombinaatio pisteen x ympäristössä, kun diskretisointiparametri h oletetaan riittävän pieneksi. Keijo Ruotsalainen Matematiikan jaos 29 / 33
Keskeisdifferenssikaava Funktion arvojen f(x + h) ja f(x h) Taylorin kehitelmät pisteen x ympäristössä: 1 : f(x + h) = f(x)+hf (x)+ h2 2 f (x)+ h3 6 f (3) (ξ + ) 0 : f(x) = f(x) 1 : f(x h) = f(x) hf (x)+ h2 2 f (x) h3 6 f (3) (ξ ) Ratkaistaan yhtälöryhmästä 1. kertaluvun derivaatta. keskeisdifferenssikaava f (x) = f(x + h) f(x h) 2h h2 6 f (3) (ξ + )+f (3) (ξ ). 2 Keijo Ruotsalainen Matematiikan jaos 30 / 33
Keskeisdifferenssikaava Oletus: Funktion kolmas derivaatta on jatkuva, niin differentiaalilaskennan väliarvolauseen nojalla on olemassa ξ [x h,x + h] siten, että Keskeisdifferenssikaavan virhe f (3) (ξ) = f (3) (ξ + )+f (3) (ξ ). 2 f (x) f(x + h) f(x h) 2h = h2 6 f (3) (ξ). Keijo Ruotsalainen Matematiikan jaos 31 / 33
Päätepistekaavat Funktion f(x) Taylorin kehitelmät pisteissä x + h ja x + 2h: 3 : f(x) = f(x) +4 : f(x + h) = f(x)+hf (x)+ h2 2 f (x)+ h3 6 f (3) (ξ 1 ) 1 : f(x + 2h) = f(x)+2hf (x)+ 2h 2 f (x)+ 8h3 6 f (3) (ξ 2 ) f(x + 2h)+4f(x + h) 3f(x) = 2hf (x)+ 2h3 3 f (ξ 1 ) 4h3 3 f (ξ Päätepistekaava f (x) = 3f(x)+4f(x + h) f(x + 2h) 2h Piste ξ on valittu väliarvolauseen nojalla siten, että f (3) (ξ) = 2f (ξ 2 ) f (ξ 1 ). + h2 3 f (3) (ξ), Keijo Ruotsalainen Matematiikan jaos 32 / 33
Toisen kertaluvun derivaatta Ratkaistaan Taylorin kehitelmistä 1 : f(x + h) = f(x)+hf (x)+ h2 2 f (x)+ h3 6 f (3) (x)+ h4 24 f (4) (ξ + ) 2 : f(x) = f(x) 1 : f(x h) = f(x) hf (x)+ h2 2 f (x) h3 6 f (3) (x)+ h4 24 f (4) (ξ ) toisen derivaatan lauseke yhtälöryhmän oikealta puolelta. Tällöin saadaan f (x) = f(x + h) 2f(x)+f(x h) h 2 h2 12 f (4) (ξ), missä ξ [x h,x + h]. Sen olemassaolo riippuu neljännen derivaatan jatkuvuudesta. Tällöin kuten 1. kertaluvun derivaattojen virhearvioiden johtamisessa sovelletaan differentiaalilaskennan väliarvolausetta. Keijo Ruotsalainen Matematiikan jaos 33 / 33
Numeerisen derivoinnin stabiilisuus Numeeriset derivointikaavat herkkiä pyöristysvirheille. Olkoon f 1 ja f 1 funktion f(x) pyöristetyt arvot pisteissä x 1 ja x 1 : f i f(x i ) 1 2 10 k, i = 1,1. Keskeisdifferenssikaavan todellinen virhe f (x 0 ) f 1 f 1 2h = f(x 1) f 1 2h = E R 1 6 h2 f (3) (ξ) + f 1 f(x 1 ) 2h 1 6 h2 f (3) (ξ) 1 2h 10 k + 1 6 h2 max f (3) (ξ) E(h). Kiinteällä desimaalitarkkuudella k kokonaisvirheen E(h) maksimi kasvaa, kun hilapisteiden välinen erotus h lähestyy nollaa. Toisin sanoen pyöristysvirheet alkavat dominoimaan laskentaa. Keijo Ruotsalainen Matematiikan jaos 34 / 33