32
Numerikus integrálás 2019. március 11.

Numerikus integrálásdobos/teaching/fiznum2019/slides/07.pdf · I ez nagyon nehéz, mi nem tanuljuk meg hogyan kell I a legtöbb esetben nem is működik. Numerikus integrálás

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Numerikus integrálás

2019. március 11.

Integrálás

A deriválás papíron is automatikusan elvégezhető feladat.

Az analitikus integrálás ezzel szemben problémásI vannak szabályok, de nem minden integrálható analitikusanI a szabályokat ugyan be lehet programozni a gépbe

(ld. Mathematica)I ez az ún. szimbolikus integrálásI analitikus alakot adI ez nagyon nehéz, mi nem tanuljuk meg hogyan kellI a legtöbb esetben nem is működik

Numerikus integrálás

Amit mi tanulunk: numerikus integrálás (kvadratúra)I ez nem analitikus alakot ad, hanem konkrét számértékeket

I =∫ b

af(x) dx

I f analitikusan adott függvény, a és b pedig számok

Numerikus integrálás

Az eljárás alapötleteI az integrálandó intervallumot diszkretizáljukI a diszkrét pontokban felvett függvényértéket kiszámítjukI az függvényértékeket az intervallum hosszával szorozzukI az így kiszámolt „területeket” összeadjuk

Cél:I az f függvényt minél kevesebbszer kiértékelveI minél pontosabban közelítsük az eredményt

Téglalapmódszer

0

2

4

6

8

10

12

14

16

-10 -5 0 5 10 15

f(x)

x

Trapézmódszer

0

2

4

6

8

10

12

14

16

-10 -5 0 5 10 15

f(x)

x

A trapézmódszer

Egyetlen integrálási szakaszra:∫ xi+1

xi

f(x) dx = h[

12 f(xi) +

12 f(xi+1)

]+ O(h3f′′)

A trapézszabály valójában a szakaszhatárok közötti lineárisinterpolációI szakaszonként lineáris függvényekre egzaktI magasabb rendű függvények esetén a hibája O(h3f′′) módon

skálázik

Az O(hmf(n)) jelölés

Az O(h3f′′) jelölés jelentéseI a korrekció h3 megszorozva az integrált függvény második

deriváltjának az [x1, x2] szakaszon felvett tetszőleges értékévelI ha a második derivált valahol nagyon nagy, akkor a módszer

instabil

Az együtthatók meghatározásaCsak egy [x1, x2] intervallumot nézünk.

Keressük az intervallum integráljának közelítését a következőalakban: ∫ x2

x1

f(x) dx = h [αf(x1) + βf(x2)]

Behelyettesítve f(x) = 1 nullad, illetve f(x) = x elsőrendűpolinomot – emlékezve, hogy h = x2 − x1 – egyenletrendszertkapunk α-ra és β-ra:

x2 − x1 = h [α+ β]

x22 − x2

12 = h [αx1 + βx2]

Ez pont a trapézformula:

⇒ α =12 β =

12

Integrálás polinomok segítségével

A trapézmódszer látványosan jobb, mint a téglalap módszer:I N helyett N + 1 függvénykiértékelés, ugyanakkorI láthatóan sokkal nagyobb pontosságI hevesen változó függvény esetén N-et nagyon meg kellene

növelni

Az eljárás elvileg folytathatóI az integrálandó szakaszokat polinomokkal közelítjükI a polinomokat tudjuk integrálni, deI tudjuk, hogy magas rendben problémákat okoznak

Zárt Newton–Cotes-formulák

Legyen adott az f jó tulajdonságokkal bíró függvény, és az [a, b]intervallum, amin integrálnunk kell. LegyenI N az integrálási szakaszok száma, ésI h = b−a

N az integrálási szakaszok hosszaI N–C-formuláknál a szakaszok hossza mindig azonos

Egy-egy intervallumban közelítsük a függvény k-ad rendűpolinommal.I ehhez intervallumonként k + 1 helyen kell f-et kiértékelniI de az intervallumok összeérnekI összes kiértékelések száma: Nk + 1

Zárt és nyílt formulák

A Simpson-szabályPéldául másodrendben:I az eredeti h hosszú intervallumot két egyenlő részre osztjukI xi+ 1

2az intervallum felezőpontja

∫ xi+1

xi

f(x) dx =h2

[13 f(xi) +

43 f(xi+1/2) +

13 f(xi+1)

]+ O(h5f(4))

Ez előző alapján azt várnánk, hogy ez O(h4) pontos, de aszerencse folytán két tag pont kiejti egymást.

A magasabb rend nem feltétlen jelent nagyobb pontosságotI csak ha az f függvény kellően sima, azazI a magasabb rendű deriváltak kicsik

Még magasabb rend? Csökken-e a hiba?

Simpson-féle 38 -ados szabály:∫ xi+1

xi

f(x) dx =

h3[3

8 f(xi) +98 f(xi+1/3) +

98 f(xi+2/3) +

38 f(xi+1)

]+ O(h5f(4))

Bode-féle szabály:∫ xi+1

xi

f(x) dx =

h4[14

45 f(xi) +6445 f(xi+1/4) +

2445 f(xi+1/2) +

6445 f(xi+3/4) +

1445 f(xi+1)

]+O(h7f(6))

A felösszegzett trapézszabályÁllítsuk elő a integrált trapézok összegéből:∫ b

af(x) dx = h

[12 f(x1) + f(x2) + ...+ f(xN) +

12 f(xN+1)

]+

+ O((b − a)3f′′

N2

)

Itt most [a, b] intervallumon integrálunkI ez N egyenlő, h = b−a

N intervallumra van osztvaI N + 1 függvénykiértékelés szükséges

A hiba N−2-vel skálázikI ha a felosztások számát duplájára növeljük, akkor a hiba

negyedére csökkenI de az is kell, hogy f′′ értéke sehol se legyen túl nagy

Magasabb rendű felösszegzett formulák

Az interpolálásra magasabb rendű függvényeket használunkI pl. köbös splineI a köbös spline integrálját analitikusan ismerjükI az együtthatók meghatározása eléggé elbonyolódik...

∫ xN

x1

f(x) dx = h[3

8 f1 + 76 f2 + 23

24 f3 + f4 + f5

...+ fN−4 + fN−3 +2324 fN−2 +

76 fN−1 +

38 fN

]+O

(1

N4

)

Nyílt integrálási formulák

Előfordul, hogy a függvény nem értékelhető ki az integrálásiszakasz egyik vagy másik végpontjábanI ekkor a zárt formulák nem működnekI nyílt formulákat kell használni

Például a trapéz szabály alapján:∫ xN

x1

f(x) dx = h[f1/2 + f3/2 + ...+ fN−1/2

]+ O(1/N2)

I ez kísértetiesen hasonlít a sima téglányösszegre (mert az)I a hibája ezért nem is túl jóI de vannak magasabb rendű változatai

Improprius integrálok

Ha az egyik vagy másik integrálási határ ±∞I változóhelyettesítést kell alkalmazni∫ b

af(x) dx =

∫ 1/a

1/b

1t2 f

(1t

)dt

I feltétel: ab > 0I ha mindkét határ végtelen, vagy a határok előjele nem azonos,

akkor két részre kell vágni, és úgy integrálni

Romberg-integrálás

Integráljuk a függvényt úgy, hogy egyre nagyobb számú szakaszraosztjuk az integrálási tartománytI nézzük az integrál konvergenciáját, ahogy h → 0I a numerikusan számolt integrál értékeiből extrapolálunk

A módszer differenciálegyenletekre is működikI Richardson-extrapolációI ügyesen választva a lépéshosszakat minimalizálható a

függvénykiértékelések száma

Az integrál iteratív meghatározásaÁllítsuk elő az integrált az [a, b] intervallum felosztogatásávalI kiindulás: trapézszabály a teljes [a, b] intervallumraI ez lesz az első közelítés

I1 = s1 = (b − a)[

12 f(a) + 1

2 f(b)]

I minden lépésben felezzük az intervallumokatI és tekintjük az aktuális h = b−a

2 és a felezőpontban vettfüggvényérték szorzatát

s2 =b − a

2 f(

a + b2

)I ezzel javíthatjuk az integrál első becslését:

I2 =12 I1 + s2

Az integrál iteratív meghatározása

Eredmény az előző diáról:

s2 =b − a

2 f(

a + b2

)

I2 =12 I1 + s2

I az 12 együttható onnan adódik, hogy az intervallum a felére

csökkentI a függvényt mindig csak az új osztópontokban kell kiszámolniI az előző közelítés eredményét mindig felhasználjukI addig kell folytatni, amíg az előző iterációtól való eltérés egy

adott hiba alá nem csökken

Romberg-integrálásAz értékeket egy táblázatba rendezzük:

R0,0R1,0 R1,1R2,0 R2,1 R2,2R3,0 R3,1 R3,2 R3,3

I minden sor első eleme az [a, b] intervallumra trapézszabállyalkiszámolt integrál

R0,0 =12(b − a) [f(a) + f(b)]

I a sor többi elemét a balra/fent levő elemekből számoljukI a sor utolsó eleme lesz az extrapolált értékI addig kell folytatni, amíg a sor utolsó két elemének különbsége

a hibahatár alá nem csökken: |Rn,n − Rn,n−1| < ϵI minden sor elején újra kell számolni az integráltI de az előző sorbeli függvénykiértékelések felhasználhatók

A Romberg-integrálás formulái

I minden sor első eleme az [a, b] intervallumra trapézszabállyalkiszámolt integrál

R0,0 =12(b − a) [f(a) + f(b)]

I a következő sor nulladik elemét h finomításával kapjukI felhasználjuk a korábbi függvénykiértékeléseket

Rn,0 =12Rn−1,0 + hn

2n−1∑k=1

f (a + (2k − 1)hn)

I a sor többi elemét extrapoláljuk az előző sor alapján

Rn,m = Rn,m−1 +1

4m − 1(Rn,m−1 − Rn−1,m−1)

Függvények szingularitással

Ha egy függvénynek valahol szingularitása vanI csak ha a szingularitás integrálhatóI megfelelő feldarabolással a határra vihető

Pl. ha a divergencia a pontban hatvány jellegűI (x − a)γ , ahol 0 < γ < 1I ekkor változóhelyettesítéssel

x = t1

1−γ + a, azaz t = (x − a)1−γ

I erre jutunk∫ b

af(x) dx =

11 − γ

∫ (b−a)1−γ

0t

γ1−γ f

(t

11−γ + a

)dt

Függvények kifejtése valamilyen bázison

Számítási szempontból néha előnyös lehetI a függvény kifejtjük függvények ortogonális bázisánI polinomok, Fourier-bázis, Legendre-polinom stb.

A bázisfüggvények egzakt integrálját tudjukI az adott függvény integrálja előáll az ismert integrálok és a

kifejtési együtthatók szorzatának összegeként

Gauss-formulák

Ha az integrálandó függvény előáll egy polinom és egy speciálisfüggvény szorzataként∫ b

aW(x)f(x) dx =

N∑j=1

wjf(xj),

I ahol f(x) polinom alakúI W(x) általában valamilyen integrálható szingularitást

tartalmazó függvényI a wj együtthatókat és xj értékeket polinomegyenletek

megoldásaként kapjuk

Néhány W(x) függvény

I Gauss–Csebisev:

W(x) = (1 − x2)−1/2 − 1 < x < 1

I Gauss–Laguerre:

W(x) = xαe−x 0 < x < ∞

I Gauss–Hermite:

W(x) = e−x2 −∞ < x < ∞

I Gauss–Jacobi:

W(x) = (1 − x)α(1 − x)β − 1 < x < 1

Többdimenziós integrálokNehéz problémaI a függvényt nagyon sok pontban kell kiértékelniI ha egy dimenzióban 100 pont kellett, akkor három

dimenzióban 106 pont kell!

Az integrálási határok is bonyolultakI egy dimenzióban intervallumI magasabb dimenzióban egy d − 1 dimenziós felületI a tartomány lehet konkáv, nem összefüggő stb.

Ha az integrandusnak és a tartománynak van valamilyenszimmetriája, akkor van remény a gyors integrálásraI pl.: gömbszimmetrikusI ilyenkor az integrálás átírható egy dimenzióra (csak r szerint)

Többdimenziós integrálás felbontásaHa az integrálási tartomány egyszerű, és a függvény nagyon simaI használható többdimenziós Gauss-kvadratúra (nem vesszük),

vagyI az integrálás elvégezhető egydimenziós integrálok sorozataként

Átírva egydimenziós integrálokra:

I =

∫∫∫R

dx dy dz f(x, y, z) =

=

∫ x2

x1

dx∫ y2(x)

y1(x)dy

∫ z2(x,y)

z1(x,y)dz f(x, y, z)

Itt ügyelni kell a határokraI x mentén haladva minden egyes függvénykiértékeléskor

valójában egy kétdimenziós integrált kell elvégezniI a „belső ciklus” nagyon drága lesz

Többdimenziós integrálás

Példa: integrálás két dimenzióban

Az f függvényt az origóra centrált egységkörön belül szeretnénkintegrálniI a kör egyenletéből a határvonal y = ±

√1 − x2

I ezzel: ∫∫R

dx dy f(x, y) =∫ 1

−1dx

∫ √1−x2

−√

1−x2dy f(x, y)

A többdimenziós integrálás algoritmusaAlgoritmus az előző problémára∫∫

Rdx dy f(x, y) =

∫ 1

−1dx

∫ √1−x2

−√

1−x2dy f(x, y)

I felosztjuk a [−1, 1] intervallumot N részreI ciklussal végigmegyünk a felosztáson, ekkor xi és xi+1 értéke

mindig ismertI elvégezzük a belső integrált az xi és xi+1 értékek mellettI ahogy haladunk x-ben, úgy folyamatosan felösszegzünk

Nem egyszerű:I annyi egymásba ágyazott ciklus lesz, ahány dimenziós az

integrálI a legbelső ciklus egy egydimenziós integrált számolI ügyelni kell a határra; nem mindig konvex vagy összefüggő