03.03.2014 Views

Numerical Methods Course Notes Version 0.1 (UCSD Math 174, Fall ...

Numerical Methods Course Notes Version 0.1 (UCSD Math 174, Fall ...

Numerical Methods Course Notes Version 0.1 (UCSD Math 174, Fall ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

104 CHAPTER 8. INTEGRALS AND QUADRATURE<br />

Quite often Romberg’s Algorithm is used to compute columns of this array. Subtractive cancelling<br />

or unbounded higher derivatives of f(x) can make successive approximations less accurate.<br />

For this reason, entries in ever rightward columns are usually not calculated, rather lower entries<br />

in a single column are calculated instead. That is, the user calculates the array:<br />

R(k, 0)<br />

R(k + 1, 0) R(k + 1, 1)<br />

R(k + 2, 0) R(k + 2, 1) R(k + 2, 2)<br />

.<br />

.<br />

.<br />

. ..<br />

R(k + n, 0) R(k + n, 1) R(k + n, 2) · · · R(k + n, n)<br />

R(k + n + 1, 0) R(k + n + 1, 1) R(k + n + 1, 2) · · · R(k + n + 1, n)<br />

R(k + n + 2, 0) R(k + n + 2, 1) R(k + n + 2, 2) · · · R(k + n + 2, n)<br />

R(k + n + 3, 0) R(k + n + 3, 1) R(k + n + 3, 2) · · · R(k + n + 3, n)<br />

.<br />

.<br />

Then R(k + n + l, n) makes a fine approximation to the integral as l → ∞. Usually n is small,<br />

like 2 or 3.<br />

8.3.1 Recursive Trapezoidal Rule<br />

It turns out there is an efficient way of calculating R(n + 1, 0) given R(n, 0); first notice from the<br />

above example that<br />

R(0, 0) = b − a 1<br />

1 2<br />

1<br />

R(1, 0) = b − a<br />

2<br />

2<br />

.<br />

[f(a) + f(b)] ,<br />

[<br />

f(a) + f( a + b<br />

2 ) + f(a + b ]<br />

2 ) + f(b) .<br />

It would be best to calculate R(1, 0) without recalculating f(a) and f(b). It turns out this is possible.<br />

Let h n = b−a<br />

2<br />

, and recall that<br />

n [<br />

]<br />

2<br />

f(a) + f(b) ∑<br />

n −1<br />

R(n, 0) = φ(n) = h n + f (a + ih n ) .<br />

2<br />

Thus<br />

⎡<br />

R(n + 1, 0) = φ(n + 1) = h n+1<br />

⎣<br />

f(a) + f(b)<br />

2<br />

= 1 2 h n<br />

= 1 2 h n<br />

[<br />

f(a) + f(b)<br />

2<br />

∑<br />

2 n+1 −1<br />

+<br />

i=1<br />

2 n −1<br />

+<br />

i=1<br />

⎤<br />

f (a + ih n+1 ) ⎦ ,<br />

∑<br />

f (a + (2i − 1)h n+1 ) + f<br />

i=1<br />

[<br />

2<br />

f(a) + f(b) ∑<br />

n −1<br />

+<br />

2<br />

= 1 2 R(n, 0) + h n+1<br />

2∑<br />

n −1<br />

i=1<br />

i=1<br />

2∑<br />

n −1<br />

f (a + ih n ) +<br />

i=1<br />

f (a + (2i − 1)h n+1 ) .<br />

.<br />

(<br />

a + (2i) 1 2 h n) ] ,<br />

f (a + (2i − 1)h n+1 )<br />

]<br />

,<br />

Then calculating R(n + 1, 0) requires only 2 n − 1 additional evaluations of f(x), instead of the<br />

2 n+1 + 1 usually required.

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

Saved successfully!

Ooh no, something went wrong!