Numeerinen integrointi

Funktio voi olla varsin yksinkertainen, mutta silti sillä ei tarvitse olla integraalifunktiota, joka olisi esitettävissä äärellisenä lausekkeena alkeisfunktioista. Silloinkin funktion määrätty integraali voidaan yleensä laskea jollakin numeerisellä menetelmällä.

Analyyttisesti derivointi on helppoa, mutta integrointi vaikeaa. Numeriikassa tilanne on päinvastainen. Integrointi on yhteenlaskua, joka on tasoittava operaatio: lähtötietojen satunnaiset virheet kumoavat toisensa. Jo varsin yksinkertaisella menetelmällä voidaan saavuttaa kohtuullinen tarkkuus.


Riemannin summa

Funktio f on integroituva välillä [x1=a, xn=b], jos Riemannin summalla

R = \sumi=1n-1 f (zi) hi,

missä

hi = xi+1 - xi, xi <= zi <= xi+1,

on raja-arvo, kun jaon silmä h = maxi { hi } -> 0.

Muuttamalla jakovälejä ja pisteiden zi valintaa saadaan erilaisia integrointimenetelmiä.

Jaetaan integroimisväli yhtä leveisiin viipaleisiin. Olkoon kunkin leveys h.

1) Lasketaan integroitava kunkin välin alkupisteessä:

\intx0xn f (x) dx = h( f (x0) + f (x0 + h) + ... + f (x0 + (n - 1) h) ).

Esimerkki:

I = \int01 x2 d x.

Oikea arvo on 1/3. Lasketaan nyt integraalin likiarvo jakamalla integroimisväli neljään osaan.

I4 = (1 / 4) (0 + (1 / 16) + (1 / 4) + (9 / 16)) = (14 / 64) \approx 0.219.

Koska integroitava funktio on koko välillä kasvava ja funktio lasketaan välin alkupäässä, saadaan liian pieni arvo.

2) Lasketaan arvo välin keskikohdalla

\intx0xn f (x) d x = h (f (x0 + h/2) + f (x0 + 3 h / 2) + ... ).

I4 = (1 / 4) ( (1 / 64) + (9 / 64) + (25 / 64) + (49 / 64) ) = (21 / 64) \approx 0.328.


Puolisuunnikasmenetelmä

Integroitava alue jaetaan puolisuunnikkaan muotoisiin viipaleisiin.

\int f (x ),d x
= h [ (f0 + f1)/2 + (f1 + f2)/2 + ... (fn-1 + fn)/2 ]  
= (h / 2) (f0 + 2f1 + 2f2 + ... + 2fn-1 + fn)
= (h / 2) [f (x0 ) + 2 f (x0 + h ) + 2 f (x0 + 2h ) + ... 2 f (x0 + (n-1)h ) + f (x0 + nh) ]

Esimerkkitapaus

I4
= (1 / 8) [ 0 + 2 (1 / 16) + 2 (4 / 16) + 2 (9 / 16) + 1 ]
= (1 / 8) (44 / 16) \approx 0.344.


Simpsonin menetelmä

Käytetään mutkikkaampia käyriä, jotka kuvaavat alkuperäistä funktiota vielä paremmin kuin suorat. Luonnollinen parannus on toisen asteen käyrä.

Lasketaan ensin integraali yhden osavälin yli. Newtonin-Gregoryn interpolointikaavan mukaan on

f (x) \approx f0 + s \Delta f0 + (s (s-1) / 2) \Delta2 f0.

\intx0 x2 f (x ) d x
\approx \intx0 x2 (f0 + s\Delta f0 + (s(s-1)/ 2) \Delta2 f0) dx
= h \int02 (f0 + s\Delta f0 + (s(s-1)/ 2) \Delta2 f0) d s
= h (2 f0 + 2 \Delta f0 + (1 / 3) \Delta2f0)
= (h / 3) (6 f0 + 6 \Delta f0 + \Delta2 f0 )

Sijoitetaan tähän

\Delta f0 = f1 - f0
\Delta2 f0 = \Delta f1-\Delta f0 = (f2 - f1) - (f1 - f0)
= f0 - 2 f1 + f_2.

Integraali kahden jakovälin yli on

\intx0 x2 f (x ) d x \approx (h / 3) (f0 + 4 f1 + f2).

Integraali koko välin yli on

\intx0 xn f (x ) d x
\approx (h / 3) (f (x0) + 4 f (x0+h ) + 2 f (x0+2h ) + 4 f (x0+3h ) + 2 f (x0+4h ) + ... 4f (x0+(n-1)h) + f (x0+nh).

Jakovälejä oltava parillinen määrä.

Esimerkkitapaus:

I4 = (1 / 12) [0 + 4 (1 / 16) + 2 (1 / 4) + 4 (9 / 16) + 1]
= 16 / (12 x 4) = 1 / 3.

Tässä integroitavaa approksimoitiin toisen asteen polynomilla. Koska integroitava itse on toista astetta, tulos on tarkka.

Virhearvio
Interpolointipolynomin virhe on korkeintaan samaa luokkaa kuin ensimmäinen poisjätetty termi.

\Delta f0 = f1 - f0 \approx h (df / d x)
\Delta2 f0 = \Delta f1 - \Delta f0 \approx h2 (d2 f / dx2)
...

Lineaarinen interpolaatio: virhe luokkaa h2 f" (x ).

Kun tämä integroidaan yhden osavälin yli saadaan lokaali virhe. Välin leveys on h, joten integraali on luokkaa h3 f" (z ), missä z on jokin välin piste.

Välejä on 1/h kappaletta, joten globaali virhe on luokkaa h2 f" (z ).

Simpsonin menetelmässä lokaali virhe on kertalukua h3 ja globaali virhe h4.


Gaussin kvadratuuri

Tilannetta voidaan parantaa valitsemalla jakopisteet xi jollakin muulla tavoin kuin tasavälisesti.

Oletetaan, että funktio on korkeintaan n-asteinen polynomi. Yritetään löytää sellaiset pisteet xi ja kertoimet wi,että

\sum wi f ( xi)

antaa polynomien integraaleille täsmälleen oikean arvon.

Esimerkki: käytetään vain kahta pistettä. Valitaan vielä integroimisväli symmetriseksi, [-1, 1].

Jotta kaava toimisi oikein kaikille astetta n astetta oleville polynomeille, sen on annettava oikeat arvot myös funktioiden 1, x, x2, ... , xn integraaleille:

\int-11 1 dx = 2 = w1 + w2,
\int-11 x dx = 0 = w1x1 + w2x2,
\int-11 x2 d x = (2 / 3) = w1x12 + w2x22,
\int-11 x3 d x = 0 = w1x13 + w2x23.

Tässä on neljä yhtälöä ja neljä tuntematonta, w1, w2, x1 ja x2. Toinen ja neljäs yhtälö toteutuvat, jos valitaan x2 = -x1 ja w1 = w2. Silloin ensimmäisen yhtälön perusteella on w1 = w2 = 1, ja kolmannesta yhtälöstä saadaan x1 = -x2=1/\sqrt 3.

Yleiset kolmannen asteen polynomit saadaan edellä esiintyneiden funktioiden lineaarikombinaatioina. Siten mielivaltaiselle korkeintaan kolmatta astetta olevalle polynomille p3 pätee

\int-11 p3(x ) d x = p3(1 / \sqrt 3) + p3(- 1 / \sqrt 3).

Kokeillaan

\int-11 (x3 + 2x2 + 1) d x =
\subst-11 x4 / 4 + 2x3 / 3 + x =
= (1 / 4) + (2 / 3) + 1 - ( (1 / 4) - (2 / 3) - 1)
= 10 / 3.

Sama Gaussin kahden pisteen kvadratuurilla:

\int-11 (x3 + 2x2 + 1) d x =
= 1 / (3 \sqrt 3) + (2 / 3) + 1 - ( 1 / (3 \sqrt 3) - (2 / 3) - 1)
= 10 / 3.

Korkeampaa astetta oleville polynomeille saadaan vastaavat yhtälöt, joiden ratkaiseminen on työlästä. Pisteiden xi ratkaiseminen suoraan yhtälöryhmistä ei ole kovin käytännöllistä. Siksi polynomit esitetäänkin ensin jonkin ortogonaalin kantafunktiojoukon avulla.

Jos pisteitä on n kappaletta, niiden paikat ovat Legendren polynomin Pn (x) nollakohtia.

P0 (x ) = 1,
P1 (x ) = x,
P2 (x ) = (1 / 2) ( 3x2 - 1),
P3 (x ) = (1 / 2) ( 5x3 - 3x),
...
(2n+1) x Pn (x ) = (n+1) Pn+1(x ) + n Pn-1 (x ).

Esim. kolmen pisteen menetelmän pisteet saadaan yhtälöstä 5x3-3x=0, josta x1=-\sqrt(3/5)=-0.7746, x2=0, x1=\sqrt(3/5)=0.7746$.

Näitä ei kannata ratkaista joka kerta uudestaan, vaan käytetään valmiiksi taulukoituja arvoja.

Pistettä xi vastaava paino on

wi = [2 / (1-xi2) (P' (xi )) 2 ].

Polynomien derivaatat saadaan kaavoista

P'0 (x ) = 0,
P'1 (x ) = 1,
P'2 (x ) = 3 x,
P'3 (x ) = (1 / 2) (15 x2 - 3),
...
P'n+1 (x ) = P'n-1 (x ) + (2n + 1) Pn (x ).

Mielivaltainen integroimisväli voidaan muuntaa väliksi [-1, 1] sijoituksella

y = (b - a) t / 2 + (b + a) / 2,

d y = (b - a)/2 d t,

jolloin integraali on

\intab f (y ) d y = (b - a)/2 \sum wi f( yi),

missä

yi = ((b - a)/2) xi + (b + a)/2.

Esimerkki:

\int0\pi/2 sin x d x

Lasketaan tämä Gaussin kolmen pisteen menetelmällä. Integroimisvälin muunnos on

yi = (\pi / 4) xi + \pi / 4.

Integraalin laskemiseen tarvitaan seuraavat suureet:

   i w_i            x_i            y_i            w_i sin y_i
  -1 0.55555 55556 -0.77459 66692  0.17703 13620  0.09783 78406
   0 0.88888 88889  0.00000 00000  0.78539 81634  0.62853 93611
   1 0.55555 55556  0.77459 66692  1.39376 49648  0.54687 26838
 \sum                                             1.27324 98855
Integraalin arvo on (\pi /4) 1.27324 98855 \approx 1.000008. Integraalin tarkka arvo on 1. Kolmen pisteen integrointikaavalla saatiin tulos, jonka suhteellinen virhe on alle 10-5.


 n    x_i                 w_i
 2 
    0.57735 02691 89626   1.00000 00000 00000

 3 
    0.00000 00000 00000   0.88888 88888 88889
    0.77459 66692 41484   0.55555 55555 55556

 4 		       
    0.33998 10435 84856   0.65214 51548 62546
    0.86113 63115 94053   0.34785 48451 37453

 5 
    0.00000 00000 00000   0.56888 88888 88889
    0.53846 93101 05684   0.47862 86704 99366    
    0.90617 98459 38664   0.23692 68850 56189

 6 
    0.23861 91860 83197   0.46791 39345 72691
    0.66120 93864 66265   0.36076 15730 48138    
    0.93246 95142 03152   0.17132 44923 79171

 7 
    0.00000 00000 00000   0.41795 91836 73469
    0.40584 51513 77398   0.38183 00505 05118   
    0.74153 11855 99395   0.27970 53914 89277  
    0.94910 79123 42759   0.12948 49661 68868

 8 
    0.18343 46424 95650   0.36268 37833 78362
    0.52553 24099 16329   0.31370 66458 77887
    0.79666 64774 13627   0.22238 10344 53375
    0.96028 98564 97536   0.10122 85362 90376

 9 		       
    0.00000 00000 00000   0.33023 93550 01260
    0.32425 34234 03809   0.31234 70770 40003    
    0.61337 14327 00590   0.26061 06964 02935    
    0.83603 11073 26636   0.18064 81606 94857    
    0.96816 02395 07626   0.08127 43883 61575


Useampiulotteiset integraalit

Voidaan laskea soveltamalla yksiulotteista integrointia erikseen kuhunkin dimensioon.

Esimerkiksi kaksiulotteinen integraali:

\intab \intcd f( x, y) d x dy
= \sum wi (\intcd f (xi, y) d y)
= \sum wi \sum w'j f (xi, yj )

Painoista ja pisteistä riippuen menetelmä voi tässä olla mikä tahansa edellisistä.

Kun dimensio suurempi kuin noin 5, kannattaa käyttää Monte Carlo -menetelmää.


Monte Carlo -menetelmä

Integraalin

I = \int01 f (x ) dx

suorakaidemenetelmällä laskettu arvo on

\sumi=0n-1 f (xi ) / n.

Tämä on funktion keskiarvo välillä [0,1]. Yleisessä tapauksessa integraali on funktion keskiarvo kerrottuna välin pituudella.

Periaatteessa sama tulos saadaan, jos integraali lasketaan satunnaisissa pisteissä ti, jotka jakautuvat tasaisesti integrointivälille:

I' = \sumi=0n-1 f (ti ) / n.

Tämä on satunnaismuuttuja, jonka odotusarvo on integraalin oikea arvo. Kun N kasvaa rajatta I' lähestyy integraalin todellista arvoa.

Jos on laskettava integraali

\intA f dV

jonkin mutkikkaan alueen A yli, lasketaan

\intB g d V,

missä B on jokin yksinkertainen alue, joka sisältää A :n ja g (x ) = f (x ), jos x on alueen A sisällä, ja 0 muuten. Integraalin likiarvo on

I = \sum g (xi ),

missä satunnaisluvut xi ovat jakautuneet tasaisesti alueeseen B.

Esimerkiksi n-ulotteisen pallon tilavuuden laskeminen. Tuotetaan kuution sisälle tasaisesti jakautuneita pisteitä

ri = (X1, X2, ... , Xn ).

Nyt g(ri ) = 1, jos | ri | on pienempi kuin pallon säde ja 0 muuten. Summa \sum g (ri ) lähenee pallon ja ympäröivän kuution tilavuuksien suhdetta.

Tuloksen virhe on verrannollinen lausekkeeseen 1 / \sqrt N. Laskentaa voidaan jatkaa tarpeen mukaan. Jos käytetään tavallista kiinteän laskentahilan menetelmää, koko homma on uusittava, jos tarkkuutta halutaan parantaa.

Tarkkuus paranee hitaasti, joten menetelmä ei sovellu kaikkiin tehtäviin.

Virhe ei riipu avaruuden dimensiosta, joten menetelmää kannattaa käyttää, kun on laskettava moniulotteisia integraaleja.