Numerisk integration (historisk navn: (numerisk) kvadratur ) er beregningen af værdien af et bestemt integral (normalt omtrentlig). Numerisk integration forstås som et sæt numeriske metoder til at finde værdien af et bestemt integral.
Numerisk integration anvendes, når:
I disse to tilfælde er det umuligt at beregne integralet ved hjælp af Newton-Leibniz formlen . Det er også muligt, at formen af antiderivatet er så kompleks, at det er hurtigere at beregne værdien af integralet numerisk.
Hovedideen med de fleste metoder til numerisk integration er at erstatte integranden med en enklere, hvis integral let kan beregnes analytisk. I dette tilfælde, for at estimere værdien af integralet, formler for formen
hvor er antallet af point, hvorved værdien af integranden beregnes. Punkterne kaldes metodens noder, tallene er nodernes vægte. Når integranden erstattes af et polynomium på nul, første og anden grad, opnås metoderne for henholdsvis rektangler , trapezoider og paraboler (Simpson). Ofte kaldes formler til at estimere værdien af integralet kvadraturformler.
Et særligt tilfælde er metoden til at konstruere integrale kvadraturformler for ensartede gitter, kendt som Cotes-formlerne . Metoden er opkaldt efter Roger Coates . Hovedideen med metoden er at erstatte integranden med en slags interpolationspolynomium . Efter at have taget integralet kan vi skrive
hvor tallene kaldes Cotes-koefficienter og beregnes som integraler af de tilsvarende polynomier i det oprindelige interpolationspolynomium for integranden ved værdien af funktionen ved knudepunktet ( er gittertrinnet; er antallet af gitterknuder og knudeindekset er ). Udtrykket er metodens fejl, som kan findes på forskellige måder. For ulige kan fejlen findes ved at integrere fejlen i integrandens interpolationspolynomium.
Særlige tilfælde af Cotes' formler er: rektangelformler ( ), trapezformler ( ), Simpsons formel ( ), Newtons formel ( ) osv.
Lad det være nødvendigt at bestemme værdien af integralet af funktionen på intervallet . Dette segment er opdelt med punkter i lige lange segmenter Betegn med værdien af funktionen i punkter. Dernæst opgør vi summen . Hver af summerne er integralsummen for på og udtrykker derfor tilnærmelsesvis integralet
Hvis den givne funktion er positiv og stigende, så udtrykker denne formel arealet af en trinvis figur bestående af "indkommende" rektangler, også kaldet formlen for venstre rektangler, og formlen
udtrykker arealet af en trinvis figur bestående af "udgående" rektangler, også kaldet formlen for retvinklede rektangler. Jo kortere længden af de segmenter, som segmentet er opdelt i, jo mere nøjagtig er værdien beregnet med denne formel for det ønskede integral.
Det er klart, at du skal regne med større nøjagtighed, hvis du tager punktet i midten af intervallet som referencepunkt for at finde højden. Som et resultat får vi formlen for de midterste rektangler:
hvor
I betragtning af den a priori større nøjagtighed af den sidste formel med samme volumen og karakter af beregninger, kaldes den formlen for rektangler
Hvis funktionen på hvert af de partielle segmenter tilnærmes af en ret linje, der går gennem de endelige værdier, får vi trapezmetoden.
Arealet af trapezet på hvert segment:
Approksimationsfejl på hvert segment:
hvorDen fulde formel for trapezoider i tilfælde af opdeling af hele integrationsintervallet i segmenter af samme længde :
hvorTrapezformel fejl:
hvorVed at bruge tre punkter i integrationssegmentet kan vi erstatte integranden med en parabel. Normalt bruges enderne af segmentet og dets midtpunkt som sådanne punkter. I dette tilfælde er formlen meget enkel
.Hvis vi deler integrationsintervallet i lige store dele, så har vi
hvor .
Approksimation af en funktion med et polynomium over hele integrationsintervallet fører som regel til en stor fejl ved estimering af værdien af integralet.
For at reducere fejlen er integrationssegmentet opdelt i dele, og en numerisk metode bruges til at evaluere integralet på hver af dem.
Da antallet af partitioner har en tendens til uendelig, tenderer estimatet af integralet til dets sande værdi for analytiske funktioner for enhver numerisk metode.
Ovenstående metoder giver mulighed for en simpel procedure for at halvere trinnet, mens det ved hvert trin kun er påkrævet at beregne funktionsværdierne ved nyligt tilføjede noder. For at estimere regnefejlen bruges Runge-reglen .
De ovenfor beskrevne metoder bruger faste punkter af segmentet (ender og midterste) og har en lav rækkefølge af nøjagtighed (0 - metoder til højre og venstre rektangler, 1 - metoder til midterste rektangler og trapezoider, 3 - paraboler (Simpson) metode). Hvis vi kan vælge de punkter, hvor vi beregner værdierne af funktionen , så kan vi opnå metoder af højere nøjagtighed med det samme antal beregninger af integranden. Så for to (som i trapezmetoden) beregninger af værdierne af integranden kan du få en metode af ikke den anden, men den tredje rækkefølge af nøjagtighed:
.I det generelle tilfælde, ved hjælp af punkter, kan formlen bruges til at opnå en metode med rækkefølgen af nøjagtighed , dvs. nøjagtige værdier opnås for polynomier af grad ikke højere end .
Nodeværdierne for Gauss-metoden efter punkter er rødderne af Legendre- gradpolynomiet . Vægtværdierne beregnes med formlen , hvor er den første afledede af Legendre-polynomiet .
For noder og vægte har følgende betydninger: vægte:
(polynomiet er defineret på segmentet ).
Den mest kendte er den Gaussiske fempunktsmetode.
Ulempen ved Gauss-metoden er, at den ikke har en nem (ud fra et beregningsmæssigt synspunkt) måde at estimere fejlen i den opnåede værdi af integralet. Brugen af Runges regel kræver beregning af integranden ved omtrent det samme antal punkter, mens det praktisk talt ikke giver nogen gevinst i nøjagtighed, i modsætning til simple metoder, hvor nøjagtigheden øges flere gange med hver ny partition. Kronrod foreslog følgende metode til at estimere værdien af integralet
,hvor er Gauss-metodens noder efter punkter, og parametrene , , er valgt på en sådan måde, at rækkefølgen af metodens nøjagtighed er lig med .
Derefter, for at estimere fejlen, kan du bruge den empiriske formel :
,hvor er den omtrentlige værdi af integralet opnået ved Gauss-metoden over punkter. gsl- og SLATEC-bibliotekerne til beregning af bestemte integraler indeholder rutiner, der anvender Gauss-Kronrod-metoden for 15, 21, 31, 41, 51 og 61 point . ALGLIB -biblioteket bruger Gauss-Kronrod-metoden til 15 point .
Chebyshev-metoden (eller som den undertiden kaldes Gauss-Chebyshev) er en af repræsentanterne for Gauss' metoder med den højeste algebraiske nøjagtighed. Dens kendetegn er, at integranden har en multiplikator , dvs. essensen er dette:
,hvor , , er antallet af metodenoder.
For at integrere over uendelige grænser skal du introducere et uensartet gitter, hvis trin stiger, efterhånden som du går til det uendelige, eller du kan lave en sådan ændring af variable i integralet, hvorefter grænserne vil være endelige. Man kan gå frem på lignende måde, hvis funktionen er singular i enderne af integrationsintervallet.
Se også den samokiske metode .
For at bestemme arealet under funktionsgrafen kan du bruge følgende stokastiske algoritme:
Denne algoritme kræver bestemmelse af yderpunkterne af funktionen på intervallet og bruger ikke den beregnede nøjagtige værdi af funktionen undtagen til sammenligning, og er derfor uegnet til praksis. De versioner af Monte Carlo-metoden, der er givet i hovedartiklen, er fri for disse mangler.
For et lille antal dimensioner af den integrerbare funktion er ydelsen af Monte Carlo-integration meget lavere end ydelsen af deterministiske metoder. Men i nogle tilfælde, når funktionen er specificeret implicit, men det er nødvendigt at bestemme området specificeret i form af komplekse uligheder, kan den stokastiske metode være mere at foretrække.
Runge-Kutta metoder - en vigtig familie af numeriske algoritmer til løsning af almindelige differentialligninger og deres systemer - iterative metoder til eksplicit og implicit omtrentlig beregning, udviklet omkring 1900 af de tyske matematikere K. Runge og M. V. Kutta .
I små dimensioner kan man også anvende kvadraturformler baseret på interpolationspolynomier . Integration udføres på samme måde som en-dimensionel integration. For store dimensioner bliver disse metoder uacceptable på grund af den hurtige stigning i antallet af gitterpunkter og/eller regionens komplekse grænse. I dette tilfælde anvendes Monte Carlo-metoden . Tilfældige point genereres i vores område, og funktionsværdierne i dem er gennemsnittet. Du kan også bruge en blandet tilgang - opdel området i flere dele, i hver af dem (eller kun i dem, hvor integralet ikke kan beregnes på grund af en kompleks grænse), anvender Monte Carlo-metoden .
Nedenfor er Python 3-implementeringen af middel rektangelmetoden, middel trapezmetoden, Simpson-metoden og Monte Carlo-metoden.
import matematik , tilfældig fra numpy import arange def get_i (): returner matematik . e ** 1 - matematik . e ** 0 def method_of_rektangler ( 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 i rækkevidde ( min_lim , max_lim - step ) : integral += step * func ( x + step / 2 ) returnerer integral d , n = 1 , 1 mens abs ( d ) > delta : d = ( integrere ( func , min_lim , max_lim , n * 2 ) - integrere ( func , min_lim , max_lim , n )) / 3 n *= 2 a = abs ( integrere ( func , min_lim , max_lim , n )) b = abs ( integrere ( func , min_lim , max_lim , n )) + d hvis a > b : a , b = b , et print ( 'Rektangler:' ) print ( ' \t %s \t %s \t %s ' % ( n , a , b )) def trapezium_metode ( 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 i rækkevidde ( min_lim , max_lim - step ) : integral += trin * ( func ( x ) + func ( x + step )) / 2 returnerer integral d , n = 1 , 1 mens abs ( d ) > delta : d = ( integrere ( func , min_lim , max_lim , n * 2 ) - integrere ( func , min_lim , max_lim , n )) / 3 n *= 2 a = abs ( integrere ( func , min_lim , max_lim , n )) b = abs ( integrere ( func , min_lim , max_lim , n )) + d hvis a > b : a , b = b , et print ( 'Trapezium:' ) print ( ' \t %s \t %s \t %s ' % ( n , a , b )) def simpson_metode ( 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 i rækkevidde ( min_lim + step / 2 - step / 2 , step ): integral += step / 6 * ( func ( x - step / 2 ) + 4 * func ( x ) + func ( x + step / 2 )) returner integral d , n = 1 , 1 mens abs ( d ) > delta : d = ( integrere ( func , min_lim , max_lim , n * 2 ) - integrere ( func , min_lim , max_lim , n )) / 15 n *= 2 a = abs ( integrere ( func , min_lim , max_lim , n )) b = abs ( integrere ( func , min_lim , max_lim , n )) + d hvis a > b : a , b = b , et 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 = tilfældig . ensartet ( 0 , 1 ), tilfældig . uniform ( 0 , 3 ) hvis y < func ( x ): in_d += 1 print ( 'MK:' ) print ( ' \t %s \t %s ' % ( n , abs ( in_d / n * 3 ))) metode_af_rektangler ( lambda x : matematik . e ** x , 0,0 , 1,0 , 0,001 ) trapezium_metode ( lambda x : matematik . e ** x , 0,0 , 1,0 , 0,001 ) simpson _ xod , 0 , math ** da , 0 _ _ 1.0 , 0.001 ) monte_karlo_method ( lambda x : math . e ** x , 100 ) print ( 'Sand værdi: \n\t %s ' % get_i ())Integralregning | ||
---|---|---|
Hoved | ||
Generaliseringer af Riemann-integralet | ||
Integrale transformationer |
| |
Numerisk integration | ||
måle teori | ||
relaterede emner | ||
Lister over integraler |