22.04.2015 Views

Numerical Integration

Numerical Integration

Numerical Integration

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<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!