A numerikus integráció (történelmi neve: (numerikus) kvadratúra ) egy határozott integrál értékének kiszámítása (általában közelítő). A numerikus integráció alatt egy bizonyos integrál értékének meghatározására szolgáló numerikus módszerek összességét értjük .
A numerikus integrációt akkor alkalmazzák, ha:
Ebben a két esetben lehetetlen kiszámítani az integrált a Newton-Leibniz képlet segítségével . Az is előfordulhat, hogy az antiderivált alakja annyira összetett, hogy gyorsabban numerikusan ki lehet számítani az integrál értékét.
A legtöbb numerikus integrációs módszer fő gondolata, hogy az integrandust egy egyszerűbbre cseréljük, amelynek integrálja analitikusan könnyen kiszámítható. Ebben az esetben az integrál értékének becsléséhez az űrlap képletei
ahol azoknak a pontoknak a száma, amelyeknél az integrandus értéke kiszámításra kerül. A pontokat a módszer csomópontjainak nevezzük, a számok a csomópontok súlyai. Ha az integrandust nulla, első és másodfokú polinomra cseréljük, a téglalapok , a trapézok és a parabolák (Simpson) módszerét kapjuk. Az integrál értékének becslésére szolgáló képleteket gyakran kvadratúra képleteknek nevezik.
Speciális eset a Cotes-képletek néven ismert, egységes rácsokhoz tartozó integrál kvadratúra képletek megalkotásának módszere . A módszert Roger Coatesről nevezték el . A módszer lényege, hogy az integrandust valamilyen interpolációs polinomra cseréljük . Az integrál felvétele után írhatunk
ahol a számokat Cotes-együtthatónak nevezik , és az integrandus eredeti interpolációs polinomjának megfelelő polinomjainak integráljaként számítják ki a függvény értékénél a csomóponton ( a rács lépése; a rács csomópontjainak száma és a csomópont indexe van ). A kifejezés a módszer hibája, amely többféleképpen is megtalálható. Páratlan esetén a hiba az integrandus interpolációs polinomjának hibájának integrálásával kereshető.
A Cotes-képletek speciális esetei: téglalap-formulák ( ), trapézformulák ( ), Simpson-formula ( ), Newton-formula ( ) stb.
Legyen szükséges meghatározni a függvény integráljának értékét az intervallumon . Ezt a szegmenst pontok egyenlő hosszúságú szegmensekre osztják . Jelölje a függvény értékével a pontokban. Ezután összeállítjuk az összegeket . Mindegyik összeg a on integrál összege, ezért közelítőleg kifejezi az integrált
Ha az adott függvény pozitív és növekvő, akkor ez a képlet egy "bejövő" téglalapokból álló lépcsőzetes alakzat területét fejezi ki, amelyet bal téglalapok képletének is neveznek, és a képlet
egy "kimenő" téglalapokból álló lépcsőzetes alakzat területét fejezi ki, amelyet derékszögű téglalapok képletének is neveznek. Minél rövidebbek azok a szegmensek, amelyekre a szegmens fel van osztva , annál pontosabb a kívánt integrál e képlettel számított értéke.
Nyilvánvalóan nagyobb pontossággal kell számolnia, ha az intervallum közepén lévő pontot veszi referenciapontnak a magasság meghatározásához. Ennek eredményeként megkapjuk a képletet a középső téglalapokhoz:
ahol
Tekintettel az utolsó képlet eleve nagyobb pontosságára, ugyanolyan térfogatú és számítási jelleggel, ezt téglalapok képletének nevezik.
Ha az egyes részszakaszokon a függvényt a végső értékeken átmenő egyenessel közelítjük , akkor a trapéz módszert kapjuk.
A trapéz területe minden szakaszon:
Közelítő hiba minden szegmensben:
aholA trapézok teljes képlete abban az esetben, ha a teljes integrációs intervallumot azonos hosszúságú szegmensekre osztjuk :
aholTrapézforma hiba:
aholAz integrációs szegmens három pontját felhasználva az integrandust helyettesíthetjük parabolával. Általában a szakasz végeit és felezőpontját használják ilyen pontként. Ebben az esetben a képlet nagyon egyszerű
.Ha az integrációs intervallumot egyenlő részekre osztjuk, akkor megvan
ahol .
Egy függvénynek egy polinommal való közelítése az integrálás teljes intervallumában általában nagy hibához vezet az integrál értékének becslésében.
A hiba csökkentése érdekében az integrációs szegmenst részekre osztjuk, és egy numerikus módszerrel értékeljük ki az integrált mindegyiken.
Mivel a partíciók száma a végtelenbe hajlik, az integrál becslése a valós értékéhez igazodik bármely numerikus módszer esetén.
A fenti módszerek lehetővé teszik a lépés felezésének egyszerű eljárását, míg minden lépésnél csak az újonnan hozzáadott csomópontoknál kell a függvényértékeket kiszámítani. A számítási hiba becsléséhez a Runge szabályt használjuk .
A fent leírt módszerek a szegmens rögzített pontjait (végek és középső) használják, és a pontosságuk alacsony (0 - jobb és bal téglalapok módszerei, 1 - középső téglalapok és trapézok módszerei, 3 - parabolák (Simpson-módszer). Ha ki tudjuk választani azokat a pontokat, ahol a függvény értékeit számítjuk , akkor nagyobb pontosságú módszereket kaphatunk az integrandus azonos számú számításával. Tehát az integrandus értékeinek két (mint a trapéz módszernél) kiszámításához nem a második, hanem a harmadik pontossági sorrendet kaphatja meg:
.Általános esetben a pontok felhasználásával a képlet segítségével olyan módszert kaphatunk, amelynek a pontossága , azaz pontos értékeket kapunk a legfeljebb fokú polinomokra .
A Gauss-módszer pontonkénti csomópontértékei a Legendre fokpolinom gyökerei . A súlyértékeket a képlet számítja ki , ahol a Legendre-polinom első deriváltja .
A csomópontok és a súlyok jelentése a következő: súlyok:
(a polinom a szegmensen van definiálva ).
A legismertebb a Gauss-féle ötpontos módszer.
A Gauss-módszer hátránya, hogy nincs egyszerű (számítási szempontból) módja az integrál kapott értékének hibájának becslésére. A Runge-szabály használata megköveteli az integrandus kiszámítását megközelítőleg ugyanannyi ponton, miközben gyakorlatilag nem ad pontosságnövekedést, ellentétben az egyszerű módszerekkel, ahol a pontosság minden új partícióval többszörösére nő. Kronrod a következő módszert javasolta az integrál értékének becslésére
,ahol a Gauss-módszer csomópontjai pontonként vannak, és a , , paramétereket úgy választjuk meg, hogy a módszer pontossági sorrendje egyenlő legyen .
Ezután a hiba becsléséhez használhatja az empirikus képletet :
,ahol a Gauss-módszerrel kapott integrál közelítő értéke a pontokon. A gsl és SLATEC függvénytárak a határozott integrálok számítására a Gauss-Kronrod módszerrel 15, 21, 31, 41, 51 és 61 ponthoz tartozó rutinokat tartalmaznak. Az ALGLIB könyvtár a Gauss-Kronrod módszert használja 15 ponthoz.
A Csebisev-módszer (vagy ahogyan néha Gauss-Csebisev-nek nevezik) a Gauss-féle legnagyobb algebrai pontosságú módszer egyik képviselője. Megkülönböztető tulajdonsága, hogy az integrandusnak van szorzója , i.e. a lényeg ez:
,ahol , , a metóduscsomópontok száma.
A végtelen határok feletti integráláshoz be kell vezetni egy nem egységes rácsot, amelynek lépései a végtelenbe haladva nőnek, vagy végrehajthatunk ilyen változóváltást az integrálban, ami után a határértékek végesek lesznek. Hasonló módon járhatunk el, ha a függvény szinguláris az integrációs intervallum végén.
Lásd még a Samokish módszert .
A függvénygráf alatti terület meghatározásához a következő sztochasztikus algoritmust használhatja:
Ez az algoritmus megköveteli a függvény extrémjének meghatározását az intervallumon, és nem használja a függvény számított pontos értékét, kivéve az összehasonlítást, ezért nem alkalmas a gyakorlásra. A Monte Carlo módszer fő cikkben közölt változatai mentesek ezektől a hiányosságoktól.
Az integrálható függvény kis számú dimenziója esetén a Monte Carlo-integráció teljesítménye jóval alacsonyabb, mint a determinisztikus módszerek teljesítménye. Bizonyos esetekben azonban, amikor a függvényt implicit módon adjuk meg, de szükséges a komplex egyenlőtlenségek formájában megadott terület meghatározása, a sztochasztikus módszer előnyösebb lehet.
Runge-Kutta módszerek - a numerikus algoritmusok fontos családja a közönséges differenciálegyenletek és rendszereik megoldására - az explicit és implicit közelítő számítás iteratív módszerei, amelyeket K. Runge és M. V. Kutta német matematikusok fejlesztettek ki 1900 körül .
Kis méretekben interpolációs polinomokon alapuló kvadratúra képletek is alkalmazhatók . Az integráció az egydimenziós integrációhoz hasonlóan történik. Nagy méretek esetén ezek a módszerek elfogadhatatlanokká válnak a rácspontok számának gyors növekedése és/vagy a régió összetett határa miatt. Ebben az esetben a Monte Carlo módszert alkalmazzuk . A területünkön véletlenszerű pontokat generálunk, és a bennük lévő függvényértékeket átlagoljuk. Használhat vegyes megközelítést is - ossza fel a területet több részre, amelyek mindegyikében (vagy csak azokban, ahol az integrál nem számítható a komplex határ miatt) alkalmazza a Monte Carlo módszert .
Az alábbiakban az átlagos téglalap módszer, az átlagos trapéz módszer, a Simpson módszer és a Monte Carlo módszer Python 3 megvalósítása látható.
import math , véletlenszerű a numpy import sorból def get_i (): return math . e ** 1 - matek . e ** 0 def method_of_rectangles ( func , min_lim , max_lim , delta ): def integrate ( func , min_lim , max_lim , n ): integral = 0.0 step = ( max_lim - min_lim ) / n for x in arange ( min_lim , max_lim - step , step ): integrál += lépés * func ( x + lépés / 2 ) visszatér integrál d , n = 1 , 1 while abs ( d ) > delta : d = ( integrál ( func , min_lim , max_lim , n * 2 ) - integrál ( func , min_lim , max_lim , n )) / 3 n *= 2 a = abs ( integrate ( func , min_lim , max_lim , n )) b = abs ( integrál ( func , min_lim , max_lim , n )) + d if a > b : a , b = b , a print ( 'Téglalapok:' ) print ( ' \t %s \t %s \t %s ' % ( n , a , b )) def trapezium_method ( func , min_lim , max_lim , delta ): def integrate ( func , min_lim , max_lim , n ): integrál = 0.0 step = ( max_lim - min_lim ) / n for x in arange ( min_lim , max_lim - step , step ): integrál += lépés * ( func ( x ) + func ( x + lépés )) / 2 visszatérő integrál d , n = 1 , 1 while abs ( d ) > delta : d = ( integrál ( func , min_lim , max_lim , n * 2 ) - integrál ( func , min_lim , max_lim , n )) / 3 n *= 2 a = abs ( integrate ( func , min_lim , max_lim , n )) b = abs ( integrate ( func , min_lim , max_lim , n )) + d if a > b : a , b = b , a print ( 'Trapéz:' ) print ( ' \t %s \t %s \t %s ' % ( n , a , b )) def simpson_method ( func , min_lim , max_lim , delta ): def integrál ( func , min_lim , max_lim , n ): integrál = 0.0 step = ( max_lim - min_lim ) / n x esetén a tartományban ( min_lim + step / 2 , max_lim - step / 2 , lépés ): integrál += lépés / 6 * ( func ( x - step / 2 ) + 4 * func ( x ) + func ( x + lépés / 2 )) visszatér integrál d , n = 1 , 1 while abs ( d ) > delta : d = ( integrál ( func , min_lim , max_lim , n * 2 ) - integrál ( func , min_lim , max_lim , n )) / 15 n *= 2 a = abs ( integrate ( func , min_lim , max_lim , n )) b = abs ( integrál ( func , min_lim , max_lim , n )) + d if a > b : a , b = b , a print ( 'Simpson:' ) print ( ' \t %s \t %s \t %s ' % ( n , a , b )) def monte_karlo_method ( func , n ): in_d , out_d = 0. , 0. for i in arange ( n ): x , y = véletlenszerű . egységes ( 0 , 1 ), véletlenszerű . egységes ( 0 , 3 ) , ha y < func ( x ): in_d += 1 print ( 'MK:' ) print ( ' \ t %s \ t %s ' % ( n , abs ( in_d / n * 3 ) téglalapok_módszere ( lambda x : matematikai . e ** x , 0,0 , 1,0 , 0,001 ) trapéz_módszer ( lambda x : math . e ** x , 0,0 , 1,0 , 0,001 ) simpson_módszer : ( x lambda .0 ** math .0 _ _ _ _ 1.0 , 0.001 ) monte_karlo_method ( lambda x : math . e ** x , 100 ) print ( 'Valódi érték: \n\t %s ' % get_i ())Integrálszámítás | ||
---|---|---|
Fő | ||
A Riemann-integrál általánosításai | ||
Integrált transzformációk |
| |
Numerikus integráció | ||
mértékelmélet | ||
Kapcsolódó témák | ||
Integrálok listái |