Presentation is loading. Please wait.

Presentation is loading. Please wait.

Math.375 Fall 2005 4. Errors in Numerical Computation Vageli Coutsias.

Similar presentations


Presentation on theme: "Math.375 Fall 2005 4. Errors in Numerical Computation Vageli Coutsias."— Presentation transcript:

1 Math.375 Fall 2005 4. Errors in Numerical Computation Vageli Coutsias

2 Types of errors in numerical computation Roundoff errors Pi = 3.14159 Pi = 3.1415926535897932384626 Truncation errors Cos x = 1 – x^2/2 Cos x = 1 – x^2/2 + x^4/4! Errors usually accumulate randomly (random walk) But they can also be systematic, and the reasons may be subtle!

3 x = linspace(1-2*10^-8,1+2*10^-8,401); f = x.^7-7*x.^6+21*x.^5-35*x.^4+35*x.^3-21*x.^2+7*x-1; plot(x,f) CANCELLATION ERRORS

4 g = -1+x.*(7+x.*(-21+x.*(35+x.*(-35+x.*(21+x.*(-7+x)))))); plot(x,g)

5 h = (x-1).^7; plot(x,h)

6 plot(x,h,x,g,x,f)

7 z(1) = 0; z(2) = 2; for k = 2:29 z(k+1) = 2^(k-1/2)*(1-(1-4^(1-k)*z(k)^2)^(1/2))^(1/2); end semilogy(1:30,abs(z-pi)/pi)

8 % Plot derivative error vs. h % to exhibit optimal step clear fname = 'sin'; fname1= 'cos'; delta = eps; hmin = 10^6*eps; hmax = 10^10*eps; xmax = 1; x=pi/4; M2=1; % estimate for second derivative hopt = 2*sqrt(delta/M2);% h for minimum error yopt = (M2/2)*hopt+2*delta/hopt; d = (feval(fname,x+hopt)-feval(fname,x))/hopt;

9 h = linspace(hmin,hmax,1000); y1 = (M2/2)*h; % truncation error y2 = 2*delta./h; % roundoff error y = y1 + y2; % total error derivh =(feval(fname,x+h) - feval(fname,x))./h; abserr = abs(feval(fname1,x)-derivh); loglog(h,y,h,y1,h,y2,h,abserr,hopt,yopt,'bo'); xlabel(sprintf('hopt = %3.2d, d%s(%3.2d)/dx=… %3.2d +/-%3.2d',hopt,fname,x,d,err)) ylabel('abserr, maxerr') title(sprintf('derivative error as function of h … for %s(x)',fname)) axis([hmin hmax 10^(-12) 10^(-4)])

10

11 Vocabulary Consistency – correctness - … Convergence (rate) Efficiency (operation counts) Numerical Stability (error amplification) Accuracy (relative vs. absolute error) Roundoff vs. Truncation

12 Due to limitations in computer arithmetic, need to practice “defensive coding”. Mathematics  numerics + implementation The sequence of computations carried out for the solution of a mathematical problem can be so complex as to require a mathematical analysis of its own correctness. How can we determine efficiency? TextText

13 Recurrence relations

14 Instability is inescapable; But one can learn to ride it!

15

16

17 APPENDIX NUMERICAL MONSTERS: a collection of curious phenomena exhibited by computations at the limit of machine precision

18 The first monster: T(x) = e^x * log(1+e^-1) For x>30 a dramatic deviation from the theoretical value 1 is found. For x>36.7 the plotted value drops (incorrectly) to zero Here: x = linspace(0,40,1000); y = exp(x).*log(1+exp(-x)); for k=1:50, term = x*term/k; s = s+term;err(k) = abs(f(k) - s);end relerr = err/exp(x); semilogy(1:nTerms,relerr)% semilogy(1:nTerms,err) ylabel('Relative Error in Partial Sum.') xlabel('Order of Partial Sum.') title(sprintf('x = %5.2f',x)) figure semilogy(1:nTerms,err)%end term = 1; s = 1; f = exp(x)*ones(nTerms,1); for k=1:50, term = x*term/k; s = s+term; err(k) = abs(f(k) - s); end relerr = err/exp(x); semilogy(1:nTerms,relerr)% semilogy(1:nTerms,err) ylabel('Relative Error in Partial Sum.') xlabel('Order of Partial Sum.') title(sprintf('x = %5.2f',x)) figure semilogy(1:nTerms,err)%end for k=1:50, term = x*term/k; s = s+term;err(k) = abs(f(k) - s);end relerr = err/exp(x); semilogy(1:nTerms,relerr)% semilogy(1:nTerms,err) ylabel('Relative Error in Partial Sum.') xlabel('Order of Partial Sum.') title(sprintf('x = %5.2f',x)) figure semilogy(1:nTerms,err)%end term = 1; s = 1; f = exp(x)*ones(nTerms,1); for k=1:50, term = x*term/k; s = s+term; err(k) = abs(f(k) - s); end relerr = err/exp(x); semilogy(1:nTerms,relerr)% semilogy(1:nTerms,err) ylabel('Relative Error in Partial Sum.') xlabel('Order of Partial Sum.') title(sprintf('x = %5.2f',x)) figure semilogy(1:nTerms,err)%end

19

20

21

22 Pet Monster I

23

24

25

26 III.MISCELLANEOUS OPERATIONS: (1) Setting ranges for axes, axis([-40 0 0 0.1]) (2) Superimposing plots: plot(x,y,x,exp(x),'o') (3) using "hold on/hold off" (4) Subplots: subplot(m,n,k)

27 Summary Roundoff and other errors Multiple plots

28 References C. Essex, M.Davidson, C. Schulzky, “Numerical Monsters”, preprint. Higham & Higham, Matlab Guide, SIAM B5 Trailer; http://www.scifi.com/b5rangers/


Download ppt "Math.375 Fall 2005 4. Errors in Numerical Computation Vageli Coutsias."

Similar presentations


Ads by Google