http://math.aalto.fi/~apiola/matlab/opas/lyhyt/numeerinen_integrointi.html
Päivitetty 17.11.2014 HA

Numeerinen integrointi

Määrätyn integraalin laskentamenetelmiä

Tehtävänä on integraalin $$ \int_a^b f(x)\, dx$$ arvon numeerinen approksimointi.

Tunnettuja menetelmiä:

Yleisemmin voidaan lähteä interpolaatiopolynomista: Interpoloidaan annettua funktiota n-asteisella polynomilla. Näin johdutaan yleisiin Newton-Cotes-kaavoihin. Interpolaatiopolynomit on kätevää esittää Lagrangen muodossa.

Yllä mainituissa kaavoissa integroitava väli jaetaan tasavälisesti.

Lisäksi väli jaetaan yleensä pienempiin osaväleihin, joilla kullakin sovelletaan ao. menetelmää, ja osatulokset summataan. -> Yhdistetyt säännöt.

Gaussin menetelmät

Haetaan n interpolaatiopisttä niin, että menetelmä on tarkka mahollisimman korkea-asteisella polynomilla. Nämä ns. Gaussin pisteet saadaan Legendren polynomien nollakohdista.

Matlabin integrointifunktiot

Alkuun pääsemiseksi kannattaa suorittaa help quad ja/tai doc quad, uudemmissa versioissa suositellaan funktiota integral, jonka peruskäyttö toimii samalla tavoin.
Tässä peruskäyttöesimerkki:
    >> quad(fun,a,b,tol)      % tai integral(fun,a,b,tol)
Tässä tol on absoluuttinen virhetoleranssi, oletusarvona 10-6. Esimerkki(help quad:sta): $$ \int_0^2 \frac{dx}{x^3-2x -5}$$

Adaptiivisuus

Tarkoittaa lyhyesti sanottuna, että askelpituus säädetään lokaalin virhearvion ja vaaditun toleranssin avulla. Käytännössä otetaan askel h, arvioidaan askeleella syntyvä virhe. Jos se on liian suuri, palataan takaisin, puolitetaan askel, ja jatketaan.

  help quad
  F = @(x) 1./(x.^3-2*x-5)
  Q = quad(F,0,2)
  integral(F,0,2)
  ezplot(F,[0 2])
  grid on
  q = quad(F,0,2,[],1)% Kts. alla selitys.
  [q Nf] = quad(F,0,2)% Nf ilmoittaa funktion arvojen laskentamäärän
Yllä esiintyivat kutsut:
    >> q=quad(fun,a,b,tol,trace)
    >> [q,Nf]=quad(fun,a,b,tol)
Kutsussa q = quad(F,0,2,[],1) käytettiin oletustoleranssia, siksi tol-parametrille annettiin arvoksi [], eli tyhjä. trace asetettiin arvoon 1, jolloin adaptiivisen laskennan vaiheista saadaan selkeä taulukko.

Molerin ncm: quadgui

Teht. Hae Molerin ncm-tiedostoista quadgui.m. Sijoita se matlabpolun varrelle ja suorita help quadgui. Tämä antaa joukon esimerkkejä, joita suorittamalla näkyy havainnollisesti, miten adaptiivisuus toimii. Vertaa kutsun [q,Nf]=quad(fun,a,b,tol,trace) tuottamaan taulukkoon. Kokeile eri funktioilla.

Poistuvia ja poistumattomia singulariteetteja

Tarkastellaan integraalia $$\int_0^1 \frac{dx}{3x-1}$$

Integaalifunktio: $\frac{1}{3}\ln | 3x -1|$

Siis integraali hajaantuu.

F=@(x) 1./(3*x-1)
ezplot(F,[0 1])
quad(F,0,1)
Warning: Infinite or Not-a-Number function value encountered. 
> In quad at 109
ans =
   Inf 
MATLAB:n quad selviää testistä varsin hyvin päätellessään integraalin hajaantuvaksi. Ainoastaan tulos Inf ei mene ihan putkeen, kuten helpoimmin nähdään kuvaajasta. Jos Matlab osaisi palauttaa NaN-tuloksen, niin päätelmä osuisi ihan nappiin, mutta yleensä tärkeää on tietää, suppeneeko vai hajaantuuko integraali, ja se päätelmä menee tässä siis oikein.

Tämä ei merkitse sitä, että päättely aina menisi oikein. Numeerisesti tällaisen päätelmän suorittaminen yleispätevästi on mahdottomuus, mutta numeerinen evidenssi on yleensä vahvasti suuntaa antava.

Lisää integrointifunktioita ja -oppia

integral, integral2, integral3, quadgk, quad2d, trapz

Moler: Numerical Computing with MATLAB



[Edellinen] [Seuraava] [Alkusivu]