1.1 Numerické integrování 1.1.1 Úvodní úvhy Nším cílem bude přibližný numerický výpočet určitého integrálu I = f(x)dx. (1.1) Je-li znám k integrovné funkci f primitivní funkce F (F (x) = f(x)), můžeme integrál v (1.1) spočítt nlyticky, Tedy npř.: f(x)dx = F (b) F (). (1.) π sin(x)dx = [ ] π cos x =. (1.3) Obvykle le primitivní funkci neznáme integrál (1.1) musíme počítt numericky. Mluvíme o numerické kvdrtuře. Lze npř. využít součtové definice určitého integrálu. Intervl, b rozdělíme body x < x 1 < x <... < x n 1 < x n b (1.4) n dosttečně mlé intervly x k 1, x k, k = 1,,..., n. Pk n I f(ξ k ) x k, (1.5) k=1 kde x k = x k x k 1 je šířk k-tého podintervlu ξ k je jeho libovolný bod, npř. ξ k = x k nebo ξ k = x k 1+x k. Pro rozumné funkce f konverguje sum n prvé strně vzthu (1.5) pro x k k přesné hodnotě I. Jiná metod spočívá v nhrzení funkce f(x) vhodnou proximující funkcí p(x), jejíž integrál dokážeme spočítt nlyticky. Z přibližné rovnosti f(x) p(x) vyplývá I p(x)dx. (1.6) Funkci p(x) volíme zprvidl ve formě interpolčního polynomu. Polynom n-tého stupně p(x) = q n x n + q n 1 x n 1 +... + q 1 x + q (1.7) obshuje n + 1 koeficientů q n, q n 1,..., q 1, q. Ty jsou určeny soustvou n + 1 rovnic p(x k ) = f(x k ), k =, 1,,..., n.
Po rozepsání x n q n + x n 1 q n 1 +... + x q 1 + q = f(x ), x n 1q n + x n 1 1 q n 1 +... + x 1 q 1 + q = f(x 1 ), (1.8). x n nq n + x n 1 n q n 1 +... + x n q 1 + q = f(x n ). Dělící body x k intervlu, b (viz(1.)) jsou zprvidl voleny jko ekvidistntní. V prxi se obvykle používá kombince obou předchozích metod - součtové interpolční: intervl, b se rozdělí n podintervly x k 1, x k, I = f(x)dx = N k=1 x k x k 1 f(x)dx, (1.9) poté se funkce f(x) proximuje funkcí p(x) zvlášť n jednotlivých podintervlech, x k x k 1 f(x)dx x k x k 1 p(x)dx. (1.1) Jsou-li podintervly x k 1, x k dosttečně úzké, vystčíme s polynomy p nízkého stupně. 1.1. Interpolční metod Nším úkolem je n intervlu, b interpolovt funkci f(x) polynomem n-tého stupně p(x) (1.7). Interpolční uzly x k, k =, 1,,..., n zvolíme pro jednoduchost jko ekvidistntní, x k = + kh, k =, 1,,..., n, h b n. (1.11) Omezíme se n polynom nultého stupně (proximce funkce f(x) konstntou, obdélníková metod interpolce), prvního stupně (proximce lineární funkcí, lichoběžníková metod) stupně druhého (proximce kvdrtickou funkcí, Simpsonov metod). ) Obdélníková metod Obdélníková metod vychází z proximce kde q je konstnt. Zvolíme-li q = f( +b ), pk I = f(x)dx f(x) q pro x, b, (1.1) ( ) ( ) + b + b f dx = (b )f. (1.13)
Geometricky odpovídá tto proximce nhrzení plochy pod křivkou f(x) plochou obdélník o výšce f( +b ) (obr.1). b) Lichoběžníková metod V tomto přípdě je funkce f(x) n intervlu, b proximován funkcí lineární, f(x) p(x) q 1 x + q. (1.14) Koeficienty p 1, p určíme z interpolčních podmínek p() = f(), p(b) = f(b): q 1 + q = f(), bq 1 + q = f(b). (1.15) Řešením této jednoduché soustvy je f(b) f() q 1 =, q = b Aproximce integrálu je tedy bf() f(b). (1.16) b I (q 1 x + q )dx = [ q 1 x + q x ] b = (b ) f() + f(b). (1.17) Geometricky odpovídá tto proximce nhrzení plochy pod křivkou f(x) lichoběžníkem o výšce b zákldnách f(), f(b) (obr.).
c) Simpsonov metod Funkce f je n intervlu, b proximován kvdrtickou funkcí p(x) = q x + q 1 x + q. Intervl, b rozdělíme uzly x =, x 1 = + b, x = b (1.18) n dv podintervly o šířce h = b. Koeficienty q, q 1, q jsou určeny soustvou tří lineárních rovnic (1.8) pro n =. Tento postup je dosti těžkopádný, to prcujeme s polynomy pouze. řádu! Elegntnější způsob nlezení interpolčního polynomu nbízí Lgrngeov metod. Polynom p(x) n-tého řádu, procházející n + 1 body [x k, f(x k )], k =, 1,,..., n, je v této metodě vyjádřen ve tvru kde n p(x) = f(x i )l i (x), (1.19) i=1 l i (x) = (x x )(x x 1 )... (x x i 1 )(x x i+1 )... (x x n ) (x i x )(x i x 1 )... (x i x i 1 )(x i x i+1 )... (x i x n ) jsou tzv. Lgrngeovy polynomy. Ty jsou zkonstruovány tk, by l i (x k ) = 1, k = i, k i, (1.) (1.1)
tkže p(x k ) = tj. grf polynomu p(x) prochází body [x k, f(x k )]. Z přibližného vzthu f(x) p(x) dostáváme n f(x i )l i (x k ) = f(x k )1, (1.) i= b b n n b I p(x)dx = f(x i )l i (x)dx = f(x i )w i, w i l i (x)dx. (1.3) i= i= Koeficienty w i se nzývjí váhy v uzlech x i. Speciálně pro polynom. řádu s uzly (1.18), dává Lgrngeov metod interpolci f(x) p(x) = f(x ) (x x 1)(x x ) (x x 1 )(x x ) + +f(x 1 ) (x x )(x x ) (x 1 x )(x 1 x ) + f(x ) (x x )(x x 1 ) (x x )(x x 1 ). (1.4) Při výpočtu váhových fktorů w, w 1, w budeme využívt substituci x = + ht, dx = hdt, t. w = w 1 = = h b w = (x x 1 )(x x ) (x x 1 )(x x ) dx = (t 1)(t )dt = 1 3 h, } {{ } 3 (x x )(x x ) (x 1 x )(x 1 x ) dx = = h = h t(t )dt = 4 3 h, (x x )(x x 1 ) (x x )(x x 1 ) dx = t(t 1)dt = 1 3 h. ( + ht h)( + ht h) hdt = ( h)( h) ( + ht )( + ht h) hdt = (1.5) h( h) ( + ht )( + ht h) hdt = hh
Simpsonův vzorec má tedy tvr I f(x ) 1 3 h + f(x 1) 4 3 h + f(x ) 1 3 h = h 3 [f(x ) + 4f(x 1 ) + f(x )] (1.6) Anlogicky bychom odvodili interpolční formule vyšších řádů. 1.1.3 Složené vzorce Čím užší bude intervl integrce, tím přesnější bude proximce funkce f polynomem p(x). Intervl, b proto rozložíme n mlé podintervly x k 1, x k, n nichž lze chybu proximce f(x) p(x) očekávt reltivně mlou. Uzly x k ze vzthu (1.4) zvolíme pro jednoduchost ekvidistntní s krokem h, ) Složená obdélníková metod x k = + kh, k =, 1,,..., n, h = b n. (1.7) Formule (1.9) spolu s formulí (1.13) plikovnou n dílčí intervly x k 1, x k dávjí pro tento přípd [ I h f b) Složená lichoběžníková metod ( ) ( ) ( x + x 1 x1 + x xn 1 + x n + f +... + f )]. (1.8) Lichoběžníkovou proximci (1.17) plikujeme n jednotlivé intervly x k 1, x k : I h [( ) ( ) ( )] f(x ) + f(x 1 ) + f(x 1 ) + f(x ) +... + f(x n 1 ) + f(x n ), (1.9) tj. [ 1 I h f(x ) + f(x 1 ) + f(x ) +... + f(x n 1 ) + 1 ] f(x n). (1.3) c) Složená Simpsonov metod V tomto přípdě musíme mít sudý počet uzlů, n = m, h = b. Simpsonův vzorec m (1.6) plikujeme postupně n intervly x, x, x, x 4,..., x m 1, x m : I h 3 +... + [( ) ( ) f(x ) + 4f(x 1 ) + f(x ) + f(x ) + 4f(x 3 ) + f(x 4 ) + ( )] f(x m ) + 4f(x m 1 ) + f(x m ). (1.31)
Po úprvě I h [ f(x ) + 4f(x 1 ) + f(x ) + 4f(x 3 )+ 3 ] +... + f(x m ) + 4f(x m 1 ) + f(x m ). (1.3) Povšimněte si, že i složené kvdrturní vzorce lze vyjádřit pomocí tbelizovných hodnot f(x k ) váhových fktorů w k v uzlech x k, n f(x)dx f(x k )w k. (1.33) k= Pro lichoběžníkovou metodu je kdežto pro Simpsonovu metodu w = w n = h, w 1 = w =... = w n 1 = h, (1.34) w = w m = 1 3 h, w 1 = w 3 =... = w m 1 = 4 3 h, w = w 4 =... = w m = h. (1.35) 3 1.1.4 Cykly složených metod, Richrdsonov metod Oznčme numerickou kvdrturu integrálu symbolem N chybu integrce jko E. Přesná hodnot I je tedy Pro lichoběžníkovou metodu lze chybu E vyjádřit ve tvru I = N + E. (1.36) (b ) E = f (η)h, (1.37) 1 kde f (η) znčí druhou derivci integrovné funkce f v blíže nespecifikovném bodě η intervlu, b. Lichoběžníková metod poskytuje tedy přesný výsledek pro lineární funkce, které mjí druhou derivci nulovou. Protože bod η není znám, odhdujeme chybu E shor. Oznčme Pk M k = mx,b f (k) (x). (b ) E M h. (1.38) 1 Chyb je druhého řádu v mocninách kroku h. Lze ji rovněž vyjádřit ve formě E = Ch + členy vyšších řádů v h, (1.39)
kde C je konstnt nezávislá n kroku h. Pro složenou Simpsonovu metodu lze odvodit (b ) E = 18 f (1.39) (η)h 4. (1.4) Simpsonov metod dává přesnou hodnotu integrálu pro polynomy do třetího řádu, neboť mjí čtvrtou derivci nulovou. Anlogií vzthů (1.39), (1.4) jsou pro Simpsonovu metodu vzthy E (b ) 18 M 4h 4, (1.41) E = Ch 4 + členy vyšších řádů. (1.4) Poždovné přesnosti integrce lze dosáhnout zmenšováním integrčního kroku. Mámeli nvíc numerickou integrci provedenou pro dv různé kroky h 1, h, můžeme provést tzv. Richrdsonovu extrpolci n krok h =, odpovídjící přesné hodnotě integrálu. Pro kroky h 1, h pišme I. = N 1 + Ch k 1, I. = N + Ch k, (1.43) V tomto vzthu jsou N 1, N numerické hodnoty integrálu získné s kroky h 1, h. V rozvoji chyby E (vzthy (1.39), (1.4)) jsme se omezili n hlvní člen, přičemž k = pro lichoběžníkovou k = 4 pro Simpsonovu metodu. Vzthy (1.43) jsou proto jen přibližné. Vzthy (1.43) předstvují soustvu dvou rovnic pro neznámé I, C. Aproximci přesné hodnoty I dostneme nejsnáze tk, že první rovnici vynásobíme h k, druhou h k 1, obě rovnice poté od sebe odečteme. Dostneme I =. N h k 1 N 1 h k. (1.44) h k 1 h k Při zjemňování kroku h je výhodné v kždé iterci zdvojnásobit počet dělících bodů, neboť pk v následujícím kroku plně využijeme dělící body funkční hodnoty z kroku předchozího. Dosdíme-li h 1 = h do (1.44), obdržíme I =. k N N 1. (1.45) k 1 Speciálně pro lichoběžníkovou metodu dává předchozí formule I =. 4N N 1, (1.46) 3 to všk odpovídá metodě Simpsonově. Rozdělme intervl, b n n = m stejných dílků s rozestupem h uzly x k,
h = b m, x k = + kh, k =, 1,,..., m. (1.47) Kvdrtur s krokem h dává N = h ( 1 y + y 1 + y +... + 1 y M kdežto kvdrtur s dvojnásobným krokem dává N 1 = h ( 1 y + y + y 4 +... + 1 y M Po doszení (1.48), (1.49) do (1.46) dostneme což je le Simpsonov sumce. 1.1.5 Jk je to v Mtlbu Funkce QUAD ), (1.48) ). (1.49) I. = h 3 (y + 4y 1 + y +... + y M ), (1.5) QU AD = Numerické vyhodnocení integrálu, dptivní Simpsonov metod. Q = QU AD(F U N, A, B) proximuje integrl funkce F U N v mezích od A do B, kromě chyby 1.e 6 s použitím rekurzivní dptivní Sipsonovy metody. Funkce Y = F UN(X) prcuje s vektorem X jko výsledek vrcí vektor Y, vyhodnocený integrnd kždého z prvků vektoru X. Q = QUAD(F UN, A, B, T OL) používá bsolutní chybu tolernce T OL nmísto implicitní hodnoty 1.e 6. Větší hodnoty tolernce T OL, poté proběhne méně výpočtů funkce tedy rychleji výpočet, le n úkor přesnosti výsledků. Funkce QU AD ve verzi MATLAB 5.3 používá méně spolehlivý lgoritmus implicitní tolernce má hodnotu 1.e 3. [Q, F CNT ] = QUAD(...) vrcí počet vyhodnocení funkce. QUAD(F UN, A, B, T OL, T RACE) s nenulovou stopou (TRACE) ukáže hodnotu [fcnt b Q] během rekurze. QUAD(F UN, A, B, T OL, T RACE, P 1, P,...) poskytuje jko dlší rgumenty P 1, P,... předány přímo funkci F UN, F UN(X, P 1, P,...). Průchod prázdné mtice co se týče T OL nebo T RACE k použití implicitních hodnot. Použití mticových operátorů.,./. v definici F UN tk, že to lze vyhodnotit s vektorovým rgumentem (vektor). Funkce QU ADL může prcovt více účinně s vysokou přesností hldkou integrovnou funkcí.
Příkld: F UN můžeme zdt třemi různými způsoby. Řetězcové vyjádření umocnění jednoduché proměnné: Q = qud( 1./(x. 3 x 5),, ); Inline objekt: F = inline( 1./(x. 3 x 5) ); Q = qud(f,, ); Ukztel funkce (operátor @): Q = qud(@myfun,, ); kde myfun.m je M-soubor: function y = myfun(x) y = 1./(x. 3 x 5); Funkce QUADL QU ADL = číselné vyhodnocení integrálu, dptivní Lobttov metod. Q = QUADL(F UN, A, B) vyšetřujeme přibližnou hodnotu integrálu funkce F UN v mezích od A do B, kromě chyby 1.e 6 s použitím vysoce uspořádné rekurzivní dptivní metody. Funkce Y = F UN(X) prcuje s vektorem X jko výsledek vrcí vektor Y, vyhodnocený integrnd kždého z prvků vektoru X. Q = QUADL(F UN, A, B, T OL) používá bsolutní chybu tolernce T OL nmísto implicitní hodnoty 1.e 6. Větší hodnoty tolernce T OL, poté proběhne méně výpočtů funkce tedy rychleji výpočet, le n úkor přesnosti výsledků. [Q, F CNT ] = QUADL(...) vrcí počet vyhodnocení funkce. QUADL(F UN, A, B, T OL, T RACE) s nenulovou stopou (TRACE) ukáže hodnotu [fcnt b Q] během rekurze. QUADL(F UN, A, B, T OL, T RACE, P 1, P,...) poskytuje jko dlší rgumenty P 1, P,... předány přímo funkci F UN, F UN(X, P 1, P,...). Průchod prázdné mtice co se týče T OL nebo T RACE k použití implicitních hodnot. Použití mticových operátorů.,./. v definici F UN tkže to lze vyhodnotit s vektorovým rgumentem (vektor). Příkld: F UN můžeme zdt třemi různými způsoby.
Řetězcové vyjádření umocnění jednoduché proměnné: Q = qudl( 1./(x. 3 x 5),, ); Inline objekt: F = inline( 1./(x. 3 x 5) ); Q = qudl(f,, ); Ukztel funkce (operátor @): Q = qudl(@myfun,, ); kde myfun.m je M-soubor: function y = myfun(x) y = 1./(x. 3 x 5);