Simpsons regel

Från testwiki
Hoppa till navigering Hoppa till sök

Simpsons regel, efter Thomas Simpson, används för att approximera en integral.

abf(x)dxba6[f(a)+4f(a+b2)+f(b)].

Förklaring

En funktion f(x) och dess interpolationspolynom P(x) som har samma funktionsvärde som f(x) i a, b och m

Simpsons regel är ett sätt att uppskatta en integral till en funktion f(x) genom att ersätta detta med ett andragradspolynom som antar samma värde som f(x) i ändpunkterna a,b och mittpunkten m. För att kunna använda simpsons regel så måste alltså värdet på f(x) vara känt i dessa tre punkter.

Det andragradspolynom som uppfyller dessa krav kallar vi P(x) och detta kan vi få fram med bland annat Newtons eller Lagranges interpolationspolynom där den senare ser ut som följer:

P(x)=f(a)(xm)(xb)(am)(ab)+f(m)(xa)(xb)(ma)(mb)+f(b)(xa)(xm)(ba)(bm)

Där alltså m är

m=a+b2

och

abf(x)dxabP(x)dx

Ur detta ses att om funktionen f(x) är ett andragradspolynom så kommer P(x) vara exakt lika med f(x).

Härledning

Härledning med hjälp av Lagranges interpolationspolynom

För att härleda att regeln ser ut som den gör behöver man bara integrera det uttrycket som står ovan. Om man nu sätter att

h=ba2,

dvs. den längd det mellan a och m eller m och b kan man skriva om uttrycket på det något trevligare utseendet:

P(x)=f(a)(x(a+h))(x(a+2h))2h2+f(a+h)(xa)(x(a+h))h2+f(a+2h)(xa)(x(a+h))2h2

Om man nu integrerar P(x) med avseende på x så kommer man få en enkel integralberäkning som dock är väldigt lång och därför kommer inte hela presenteras. Om man bara tittar på kvoten efter f(a) och integrerar denna så kan man uppfattning om att det ändå stämmer, så att:

P1(x)=f(a)(x(a+h))(x(a+2h))2h2

Och integralen av P1(x) blir då alltså

aa+2hP1(x)dx=aa+2hf(a)(x(a+h))(x(a+2h))2h2dx=
f(a)2h2[x(a2+3ah+2h2)x2(2a+3h2)+x33]aa+2h=
f(a)h3=f(a)ba6

Vilket stämmer med ovan. De andra två räknas ut på likartat sätt och resultatet ovan kommer att erhållas. Nämnaren 3 gör att uttrycket ibland kallas Simpsons 1/3 regel.

Restterm

Integralen av interpolationspolynomet kan även skrivas med en restterm Rn och får då utseendet

aa+2hf(x)dx=aa+2hP(x)dx+Rn

Där

Rn=h590 f(4)(ξ), ξ[a,a+2h] [1]

Det största möjliga felet som kan inträffa gör alltså det när absolutbeloppet av fjärdederivatan av f är så stort som möjligt. Det största felet kan skrivas som

|f(ξ)(4)|M, ξ[a,a+2h]
|Rn|h590M

Simpsons 3/8 regel

Om man istället vet värdet hos en funktion f(x) i fyra skilda punkter kan man göra som ovan men ersätta funktionen med ett tredjegradspolynom. Härledningen ser väldigt likartad ut som den ovan. Lagranges interpolationspolynom blir då

P(x)=f(a)(x(a+h))(x(a+2h))(x(a+3h))6h3+f(a+h)(xa)(x(a+2h))(x(a+3h))2h3
+f(a+2h)(xa)(x(a+h))(x(a+3h))2h3+f(a+3h)(xa)(x(a+h))(x(a+2h))6h3

Där

h=ba3

Simpsons 3/8 regel säger då att

abf(x)dxabP(x)dx

Och att detta i sin tur är

aa+2hf(x)dx3h8[f(a)+3f(a+h)+3f(a+2h)+f(a+3h)]

MATLAB-implementation

Simpsons regel kan implementeras i MATLAB enligt följande:

function [P] = simpson(f,a,b,n)
%f=funktionens namn, a=startvärde, b=slutvärde, 
%n=antal iterationer
h=(b-a)/n;
S=f(a);
i=1:2:n-1;
x=a+h.*i;
y=f(x);
S=S+4*sum(y);
i=2:2:n-2;
x=a+h.*i;
y=f(x);
S=S+2*sum(y);
S=S+f(b);
P=h*S/3;
end

Källor

  1. http://planetmath.org/?op=getobj&from=objects&id=7979 Planet Math: bound on error of Simpson's rule