22.04.2015 Views

Numerical Integration

Numerical Integration

Numerical Integration

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Numerical</strong> <strong>Integration</strong><br />

• Newton-Cotes <strong>Numerical</strong> <strong>Integration</strong> Scheme<br />

• See Chapter 10 of E-book – clear and easy to understand<br />

d<br />

derivation of formulae for Trapezoidal & Simpson’s rules<br />

• Replace complicated function (or tabulated data) with some<br />

approximating function that is easy to integrate<br />

n<br />

I<br />

b<br />

= ∫ f<br />

(<br />

x<br />

)<br />

dx<br />

≅ ∫ f<br />

(<br />

x<br />

)<br />

dx<br />

a<br />

b<br />

= ∫ ∫<br />

a<br />

n<br />

n−1<br />

n−<br />

1<br />

f ( x)<br />

= a + a x + L+<br />

a x +<br />

0<br />

1<br />

a<br />

n<br />

x<br />

n<br />

© 2003-2006 Roberto Muscedere 1


Trapezoidal Rule<br />

• Result of integration is<br />

bounded by f(x) and the x<br />

axis between x=a and x=b<br />

• Can be approximated<br />

numerically by dividing the<br />

region into small segments<br />

each of width ∆x<br />

• The area of each segment<br />

can be approximated by a<br />

trapezoid (approximating<br />

each segment of the curve<br />

by a straight line)<br />

© 2003-2006 Roberto Muscedere 2


Trapezoidal Rule<br />

• Trapezoidal Rule is the first of the Newton-<br />

Cotes closed integration formulas (n=1)<br />

I<br />

b<br />

= ∫ f x)<br />

dx ≅<br />

∫ ( )<br />

a<br />

b<br />

( f x dx<br />

1<br />

f ( b)<br />

− f ( a)<br />

f ( x)<br />

= f ( a)<br />

+<br />

( x − a)<br />

1 b − a<br />

• f 1 (x) () is a straight line<br />

a<br />

© 2003-2006 Roberto Muscedere 3


Trapezoidal Rule<br />

• The area under this straight line is an<br />

estimate of the integral of f(x) between the<br />

limits of a and b<br />

I<br />

b<br />

= ∫<br />

a<br />

⎡<br />

⎢<br />

⎣<br />

f<br />

f ( b)<br />

− f ( a)<br />

⎤<br />

(<br />

a<br />

)<br />

+<br />

(<br />

x −<br />

a<br />

)<br />

dx<br />

b − a<br />

⎥<br />

⎦<br />

I<br />

≅<br />

( b<br />

−<br />

a)<br />

f<br />

(<br />

b<br />

)<br />

+<br />

2<br />

f<br />

( a<br />

)<br />

© 2003-2006 Roberto Muscedere 4


Trapezoidal Rule<br />

• Same result if we<br />

calculated l trapezoid<br />

graphically<br />

I<br />

≅<br />

( b<br />

I<br />

⎛<br />

f<br />

(<br />

b<br />

)<br />

−<br />

f<br />

(<br />

a<br />

)<br />

− a)<br />

⎜<br />

⎝ 2<br />

f<br />

(<br />

b<br />

)<br />

+<br />

f<br />

≅ ( b − a)<br />

2<br />

+<br />

f<br />

(<br />

a<br />

)<br />

⎞<br />

( a)<br />

⎟<br />

⎠<br />

I<br />

⎛ f ( b)<br />

− f ( a)<br />

⎞<br />

≅ ( b − a)<br />

⎜ + f ( a)<br />

⎟ ⎝<br />

2<br />

⎠<br />

f ( b)<br />

+ f ( a)<br />

I ≅ ( b − a)<br />

2<br />

© 2003-2006 Roberto Muscedere 5


Trapezoidal Rule: Example<br />

• <strong>Numerical</strong>ly integrate:<br />

f<br />

( x<br />

) = 0.2 + 25x<br />

− 200x<br />

+ 675x<br />

2<br />

3<br />

−<br />

900x<br />

4<br />

+<br />

400x<br />

5<br />

a = 0, b = 0.8<br />

(Analytical answer = 1.6405333)<br />

© 2003-2006 Roberto Muscedere 6


Trapezoidal Rule: Example<br />

f<br />

(0)<br />

= 0.2<br />

f<br />

(0.8)<br />

=<br />

0.232<br />

I<br />

≅<br />

0.2<br />

0.232<br />

⎞<br />

0 .8<br />

⎜<br />

⎛ +<br />

⎟ =<br />

⎝ 2 ⎠<br />

0.1728<br />

• Significant difference from analytical solution<br />

of 1.6405333<br />

© 2003-2006 Roberto Muscedere 7


Trapezoidal Rule: Example<br />

• Why so bad?<br />

© 2003-2006 Roberto Muscedere 8


Trapezoidal Rule<br />

• Add a series of intervals<br />

b − a<br />

= x = a x = b<br />

n<br />

n<br />

h<br />

0<br />

x<br />

1<br />

x<br />

2<br />

x n<br />

I<br />

=<br />

∫<br />

f + + +<br />

( x<br />

) dx<br />

∫<br />

f<br />

( x<br />

) dx L ∫<br />

f<br />

( x<br />

) dx<br />

x<br />

0<br />

x<br />

1<br />

x n− 1<br />

© 2003-2006 Roberto Muscedere 9


Trapezoidal Rule<br />

• Substituting the trapezoidal rule for each<br />

integral yields:<br />

f<br />

( x<br />

) +<br />

f<br />

( x<br />

)<br />

f<br />

( x<br />

) +<br />

f<br />

( x<br />

)<br />

I ≅ h<br />

0 1<br />

+ h<br />

1 2<br />

+<br />

2<br />

2<br />

f ( x<br />

L+ + h<br />

n−<br />

)<br />

+<br />

f<br />

( x<br />

1 n<br />

2<br />

)<br />

© 2003-2006 Roberto Muscedere 10


• Grouping the terms:<br />

Trapezoidal Rule<br />

I<br />

≅<br />

h<br />

⎡<br />

⎢<br />

⎣<br />

f<br />

n−1<br />

⎤<br />

( x ) + 2∑<br />

f ( x ) + f ( x )<br />

0 i n ⎥<br />

i=11<br />

⎦<br />

2 i<br />

I<br />

≅<br />

x<br />

− x<br />

n −1<br />

n 0<br />

f ∑<br />

2n<br />

i<br />

⎡<br />

⎢<br />

⎣<br />

⎤<br />

(<br />

x<br />

)<br />

+<br />

2∑<br />

f<br />

(<br />

x<br />

)<br />

+<br />

f<br />

(<br />

x )<br />

0 i n<br />

⎥<br />

=1<br />

⎦<br />

© 2003-2006 Roberto Muscedere 11


Trapezoidal Rule: Example<br />

• <strong>Numerical</strong>ly integrate (using two segments, n=2):<br />

f<br />

( x<br />

) = 0.2 + 25x<br />

− 200x<br />

+ 675x<br />

2<br />

3<br />

−<br />

900x<br />

4<br />

+<br />

400x<br />

5<br />

a = 0, b = 0.8, n = 2<br />

(Analytical answer = 1.6405333)<br />

© 2003-2006 Roberto Muscedere 12


Trapezoidal Rule: Example<br />

f<br />

(0)<br />

=<br />

0.2<br />

f<br />

(0.4)<br />

=<br />

2.456<br />

f<br />

(0.8)<br />

=<br />

0.232<br />

I<br />

≅<br />

⎛ 0.2 + 2(2.456) + 0.232 ⎞<br />

0 .8<br />

⎜<br />

⎟ =<br />

⎝ 4 ⎠<br />

1.0688<br />

• Significantly better than with one segment of<br />

the trapezoidal rule (0.1728)<br />

© 2003-2006 Roberto Muscedere 13


Trapezoidal Code (p.1)<br />

class <strong>Integration</strong> {<br />

private:<br />

double x0, xn; // limits of integration<br />

double (*f)(double x); //function to be integrated<br />

public:<br />

<strong>Integration</strong>(double (*F)(double x), double a,<br />

double b) {<br />

f=F;<br />

x0=a;<br />

xn=b;}<br />

double Trapezoidal(int n);<br />

};<br />

© 2003-2006 Roberto Muscedere 14


Trapezoidal Code (p.2)<br />

double <strong>Integration</strong>::Trapezoidal(int n)<br />

{<br />

double h=(xn-x0)/n;<br />

double sum=0.0;<br />

double x=x0;<br />

double I;<br />

for(int i=1; i


Trapezoidal Code (p.3)<br />

double FUN(double x) // User supplied function<br />

{<br />

return 0.2 + 25*x - 200*x*x + 675*x*x*x - 900*x*x*x*x<br />

+ 400*x*x*x*x*x;<br />

}<br />

int main()<br />

{<br />

<strong>Integration</strong> I(FUN,0,0.8);<br />

0 int i;<br />

for(i=1;i


Trapezoidal Code -Output<br />

n=1, I=0.1728<br />

n=2, I=1.0688<br />

n=3, I=1.36957<br />

n=4, I=1.4848<br />

n=5, I=1.53988<br />

n=6, I=1.57027<br />

n=7, I=1.58874<br />

n=8, I=1.6008<br />

n=9, I=1.60909<br />

n=10, I=1.61504<br />

n=11, I=1.61945<br />

n=12, I=1.62281<br />

n=13, I=1.62542<br />

n=14, I=1.6275<br />

n=15, I=1.62918<br />

n=16 16, I=1 1.63055<br />

© 2003-2006 Roberto Muscedere 17


Simpson’s 1/3 Rule<br />

• Simpson’s Rule is the second of the Newton-<br />

Cotes closed integration formulas (n=2) using<br />

Lagrange Interpolating Polynomials<br />

f<br />

x<br />

2 2<br />

∫<br />

f<br />

x<br />

dx<br />

≅<br />

∫<br />

I =<br />

(<br />

)<br />

f<br />

(<br />

x<br />

)<br />

dx<br />

2<br />

n<br />

x<br />

( x)<br />

x<br />

x<br />

0 0<br />

n<br />

n<br />

x −<br />

= ∑ f ( x ) ∏ −<br />

i<br />

i=<br />

0 j=<br />

0<br />

j≠i<br />

x<br />

x x i<br />

© 2003-2006 Roberto Muscedere 18<br />

j<br />

j


Simpson’s 1/3 Rule<br />

( x − x1<br />

)( x − x2)<br />

( x − x0)(<br />

x − x2)<br />

f<br />

2<br />

(<br />

x<br />

) =<br />

f<br />

(<br />

x<br />

0<br />

)<br />

+<br />

f<br />

(<br />

x<br />

1<br />

)<br />

+<br />

( x − x )( x − x ) ( x − x )( x − x )<br />

0<br />

1<br />

0<br />

( x −<br />

( x −<br />

2<br />

2<br />

x<br />

x<br />

)( x<br />

)( x<br />

− x1<br />

)<br />

− x )<br />

0 f<br />

(<br />

x2<br />

0 2 1<br />

• After integration ti and algebraic manipulation:<br />

I<br />

h<br />

3<br />

0<br />

1<br />

+<br />

x −<br />

2<br />

x<br />

h = 0<br />

2<br />

≅<br />

[ f<br />

(<br />

x<br />

)<br />

+<br />

4<br />

f<br />

(<br />

x<br />

) +<br />

f<br />

(<br />

x<br />

)<br />

]<br />

© 2003-2006 Roberto Muscedere 19<br />

1<br />

0<br />

)<br />

2<br />

1<br />

2


Trapezoidal Rule: Example<br />

• What does this represent?<br />

© 2003-2006 Roberto Muscedere 20


Simpson’s 1/3 Rule: Example<br />

• <strong>Numerical</strong>ly integrate:<br />

f<br />

( x<br />

) = 0.2 + 25x<br />

− 200x<br />

+ 675x<br />

2<br />

3<br />

−<br />

900x<br />

4<br />

+<br />

400x<br />

5<br />

x 0 = 0, x 2 = 0.8<br />

(Analytical answer = 1.6405333)<br />

© 2003-2006 Roberto Muscedere 21


Simpson’s 1/3 Rule: Example<br />

f<br />

(0)<br />

=<br />

0.2<br />

f<br />

(0.4)<br />

=<br />

2.456<br />

f<br />

(0.8)<br />

=<br />

0.232<br />

I<br />

≅<br />

⎛ 0.2 + 4(2.456) + 0.232 ⎞<br />

0 .8<br />

⎜<br />

⎟ =<br />

⎝ 6 ⎠<br />

1.36746667<br />

• Better than with Trapezoidal Rule with two<br />

segments (1.0688)<br />

© 2003-2006 Roberto Muscedere 22


Simpson’s 1/3 Rule<br />

• Add a series of intervals<br />

x − x<br />

h =<br />

2<br />

0<br />

n<br />

x<br />

2<br />

x<br />

4<br />

x n<br />

I<br />

=<br />

∫<br />

f + + +<br />

( x<br />

) dx<br />

∫<br />

f<br />

( x<br />

) dx L ∫<br />

f<br />

( x<br />

) dx<br />

x<br />

0<br />

x<br />

2<br />

x n− 2<br />

© 2003-2006 Roberto Muscedere 23


Simpson’s 1/3 Rule<br />

• Substituting Simpson’s 1/3 rule for each<br />

integral yields:<br />

I<br />

≅<br />

+<br />

f<br />

(<br />

x<br />

)<br />

+<br />

4<br />

f<br />

(<br />

x<br />

)<br />

+<br />

f<br />

(<br />

x<br />

0 1<br />

2 h<br />

2<br />

f ( x ) + 4 f ( x ) + f ( x )<br />

2h<br />

2 3 4<br />

6<br />

f ( x ) + 4 f ( x<br />

+ L<br />

+ 2hh<br />

n−<br />

n−<br />

6<br />

6<br />

)<br />

)<br />

+<br />

( x<br />

2 1 n<br />

f<br />

)<br />

© 2003-2006 Roberto Muscedere 24


Simpson’s 1/3 Rule<br />

• Grouping the terms:<br />

I<br />

≅<br />

⎛<br />

⎜<br />

⎝<br />

x<br />

−<br />

x<br />

⎞<br />

⎟<br />

⎠<br />

⎡<br />

⎢<br />

⎢<br />

f<br />

n−1<br />

∑<br />

( x ) + 4 f ( x )<br />

0 i<br />

n 0 ⎢<br />

i<br />

=<br />

1,3,5<br />

3n<br />

⎢<br />

n − 2<br />

⎢<br />

+ 2<br />

∑<br />

f<br />

( x<br />

)<br />

j= 2,4, 6<br />

⎢<br />

⎣<br />

+<br />

f<br />

( x<br />

j n<br />

⎤<br />

⎥<br />

⎥<br />

⎥<br />

)<br />

⎥<br />

⎦<br />

• n must be even<br />

© 2003-2006 Roberto Muscedere 25


Simpson’s 1/3 Rule: Example<br />

• <strong>Numerical</strong>ly integrate:<br />

f<br />

( x<br />

) = 0.2 + 25x<br />

− 200x<br />

+ 675x<br />

2<br />

3<br />

−<br />

900x<br />

4<br />

+<br />

400x<br />

5<br />

x 0 = 0, x 2 = 0.8, n = 4<br />

(Analytical answer = 1.6405333)<br />

© 2003-2006 Roberto Muscedere 26


I<br />

f<br />

Simpson’s 1/3 Rule: Example<br />

(0.4)<br />

≅<br />

f<br />

( 0) = 0.2 f (0.2) = 1.288<br />

= 2.456 f (0.6) = 3.464 f<br />

(0.8)<br />

0.232<br />

⎛ 0.2<br />

+<br />

4(1.288<br />

+<br />

3.464)<br />

+<br />

2(2.456)<br />

+<br />

0.232<br />

⎞<br />

0.8⎜<br />

⎟<br />

⎝<br />

12<br />

⎠<br />

=1.62346667<br />

• Better than with Trapezoidal Rule with eight<br />

segments (1.6008)<br />

=<br />

© 2003-2006 Roberto Muscedere 27


Simpson’s 1/3 Code (p.1)<br />

class <strong>Integration</strong> {<br />

private:<br />

double x0, xn; // limits of integration<br />

double (*f)(double x); //function to be integrated<br />

public:<br />

<strong>Integration</strong>(double (*F)(double x), double a,<br />

double b) {<br />

f=F;<br />

x0=a;<br />

xn=b;}<br />

double Trapezoidal(int n);<br />

double Simpsons13(int n);<br />

};<br />

© 2003-2006 Roberto Muscedere 28


Simpson’s 1/3 Code (p.2)<br />

double <strong>Integration</strong>::Trapezoidal(int n)<br />

{<br />

double h=(xn-x0)/n;<br />

double sum=0.0;<br />

double x=x0;<br />

double I;<br />

for(int i=1; i


Simpson’s 1/3 Code (p.3)<br />

double <strong>Integration</strong>::Simpsons13(int n)<br />

{<br />

double h=(xn-x0)/n;<br />

double sum=0.0;<br />

double x=x0;<br />

double I;<br />

for(int i=1; i


Simpson’s 1/3 Code (p.4)<br />

double FUN(double x) // User supplied function {<br />

return 0.2 + 25*x - 200*x*x * + 675*x*x*x * * - 900*x*x*x*x* * *<br />

+ 400*x*x*x*x*x; }<br />

int main() {<br />

<strong>Integration</strong> I(FUN,0,0.8);<br />

int i;<br />

for(i=2;i


Simpson’s 1/3 Code -Output<br />

n=2, I(trap)=1.0688, I(simp)=1.36747<br />

n=4, I(trap)=1.4848, I(simp)=1.62347<br />

n=6, I(trap)=1.57027, I(simp)=1.63716<br />

n=8, I(trap)=1.6008, I(simp)=1.63947<br />

n=10, I(trap)=1.61504, I(simp)=1.6401<br />

n=12, I(trap)=1.62281, I(simp)=1.64032<br />

n=14, I(trap)=1.6275, I(simp)=1.64042<br />

n=16, I(trap)=1.63055, I(simp)=1.64047<br />

© 2003-2006 Roberto Muscedere 32

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!