21.06.2014 Views

Numerical Methods Contents - SAM

Numerical Methods Contents - SAM

Numerical Methods Contents - SAM

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

Local quadrature error (for f ∈ C 2 ([a,b])):<br />

10000<br />

9000<br />

❸<br />

(local mesh refinement)<br />

∫ x k<br />

f(t) dt − 1 2 (f(x k−1) + f(x k ))<br />

x k−1<br />

≤ (x k − x k−1 ) 3 ∥ ∥f ′′∥ ∥ L ∞ ([x k−1 ,x k ]) .<br />

➣ Do not use equidistant mesh !<br />

Refine M, where |f ′′ | large !<br />

f(t)<br />

8000<br />

7000<br />

6000<br />

5000<br />

4000<br />

3000<br />

2000<br />

1000<br />

f(t) = 1<br />

10 −4 +t 2<br />

S := {k ∈ {1,...,m}: EST k ≥ η · 1 m∑<br />

EST<br />

m j } , η ≈ 0.9 . (10.6.3)<br />

j=1<br />

new mesh: M ∗ := M ∪ {p k : k ∈ S} .<br />

Then continue with step ❶ and mesh M ← M ∗ .<br />

Makes sense, e.g., for “spike function” ✄ 0<br />

−1 −0.5 0 0.5 1<br />

✬<br />

Goal:<br />

Tool:<br />

Policy:<br />

✫<br />

Equilibrate error contributions of all mesh intervals<br />

Local a posteriori error estimation<br />

(Estimate contributions of mesh intervals from intermediate results)<br />

Local mesh refinement<br />

t<br />

Fig. 117<br />

✸<br />

✩<br />

Ôº½¿<br />

Ôº½ ½¼º<br />

Adaptive multigrid quadrature → [13, Sect. 9.7]<br />

11 i f ( ( e r r _ t o t > r t o l ∗abs ( I ) ) and ( e r r _ t o t > a b s t o l ) )<br />

½¼º<br />

✪<br />

10 %<br />

Non-optimal recursive MATLAB implementation:<br />

Code 10.6.2: h-adaptive numerical quadrature<br />

1 function I = adaptquad ( f ,M, r t o l , a b s t o l )<br />

2 h = d i f f (M) ; %<br />

3 mp = 0.5∗(M( 1 : end−1)+M( 2 : end ) ) ; %<br />

4 f x = f (M) ; fm = f (mp) ; %<br />

5 t r p _ l o c = h . ∗ ( f x ( 1 : end−1)+2∗fm+ f x ( 2 : end ) ) / 4 ; %<br />

6 simp_loc = h . ∗ ( f x ( 1 : end−1)+4∗fm+ f x ( 2 : end ) ) / 6 ; %<br />

7 I = sum( simp_loc ) ; %<br />

8 e s t _ l o c = abs ( simp_loc −t r p _ l o c ) ; %<br />

9 e r r _ t o t = sum( e s t _ l o c ) ; %<br />

Idea: local error estimation by comparing local results of two quadrature formulas<br />

Q 1 , Q 2 of different order → local error estimates<br />

heuristics: error(Q 2 ) ≪ error(Q 1 ) ⇒ error(Q 1 ) ≈ Q 2 (f) − Q 1 (f) .<br />

Now: Q 1 = trapezoidal rule (order 2) ↔ Q 2 = Simpson rule (order 4)<br />

12 r e f c e l l s = find ( e s t _ l o c > 0.9∗sum( e s t _ l o c ) / length ( h ) ) ;<br />

13 I = adaptquad ( f , sort ( [M,mp( r e f c e l l s ) ] ) , r t o l , a b s t o l ) ; %<br />

14 end<br />

Comments on Code 10.6.1:<br />

Given: mesh M := {a = x 0 < x 1 < · · · < x m = b}<br />

❶<br />

❷<br />

(error estimation)<br />

For I k = [x k−1 ,x k ], k = 1,...,m (midpoints p k := 2 1(x k−1 + x k ) )<br />

EST k := ∣ h k<br />

6 (f(x k−1) + 4f(p k ) + f(x k )) − h k<br />

} {{ } 4 (f(x k−1) + 2f(p k ) + f(x k )) ∣ . (10.6.1)<br />

} {{ }<br />

Simpson rule<br />

trapezoidal rule on split mesh interval<br />

(Termination)<br />

Simpson rule on M ⇒ preliminary result I<br />

m∑<br />

If<br />

k=1<br />

Ôº½ ½¼º<br />

EST k ≤ RTOL · I (RTOL := prescribed tolerance) ⇒ STOP (10.6.2)<br />

• Arguments: f ˆ= handle to function f, M ˆ= initial mesh, rtol ˆ= relative tolerance for termination,<br />

abstol ˆ= absolute tolerance for termination, necessary in case the exact integral value = 0,<br />

which renders a relative tolerance meaningless.<br />

• line 2: compute lengths of mesh-intervals [x j−1 ,x j ],<br />

• line 3: store positions of midpoints p j ,<br />

• line 4: evaluate function (vector arguments!),<br />

• line 5: local composite trapezoidal rule (10.3.2),<br />

• line 6: local simpson rule (10.2.4),<br />

• line 7: value obtained from composite simpson rule is used as intermediate approximation for<br />

integral value,<br />

• line 8: difference of values obtained from local composite trapezoidal rule (∼ Q 1 ) and ocal<br />

simpson rule (∼ Q 2 ) is used as an estimate for the local quadrature error.<br />

Ôº½ ½¼º

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

Saved successfully!

Ooh no, something went wrong!