Numerikus integrálás

Contents

Trapézformula

A közelítő integrált kiszámító függvény:

function kvadr=trapez(a,b,n,fv)

h=(b-a)/n;
x=(a+h):h:(b-h);
kvadr=h*sum(fv(x))+h*fv(a)/2+h*fv(b)/2;

A Matlab beépített intergálófüggvénye a integral(), ezzel ellenőrizhetjük a konvergencia sebességét. Legyen a függvény f(x)=x*sin(x), ezt egy külön fájlba mentjük fv.m néven. Ekkor:

for i=1:4
    trapez(1,2,10^i,@fv)-integral(@fv,1,2)
end
ans =

   -0.0011


ans =

  -1.0873e-05


ans =

  -1.0873e-07


ans =

  -1.0873e-09

A hiba jól láthatóan O(h^2), hiszen egy lépsében 1/10-edére vettem az osztásközt, ettől a hiba kb 1/100-adára változott.

Simpson formula

Órai feladat: Valósítsuk meg Matlabban a Simpson-kvadratúrát!

function kvadr=simpsonkv(a,b,n,fv)

h=(b-a)/n;
x=a+h : h: b-h;
x2=a+h/2 : h : b-h/2;
kvadr=h*(2/6*sum(fv(x))+4/6*sum(fv(x2))+fv(a)/6+fv(b)/6);

Innen:

for i=1:4
    simpsonkv(1,2,10^i,@fv)-integral(@fv,1,2)
end
ans =

   4.0605e-08


ans =

   4.0594e-12


ans =

     0


ans =

     0

A hiba O(h^4). Persze létezik jobb, ha a 3-adfokú (4-edfokú,...) Lagrange-interpolációs polinommal közelítünk.