Math.375 Fall 2005 4. Errors in Numerical Computation Vageli Coutsias.
Post on 17-Dec-2015
220 Views
Preview:
Transcript
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 reasonsmay be subtle!
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
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);endsemilogy(1:30,abs(z-pi)/pi)
% Plot derivative error vs. h % to exhibit optimal stepclearfname = '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 erroryopt = (M2/2)*hopt+2*delta/hopt;
d = (feval(fname,x+hopt)-feval(fname,x))/hopt;
h = linspace(hmin,hmax,1000); y1 = (M2/2)*h; % truncation error y2 = 2*delta./h; % roundoff error y = y1 + y2; % total errorderivh =(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)])
Vocabulary
• Consistency – correctness - …
• Convergence (rate)
• Efficiency (operation counts)
• Numerical Stability (error amplification)
• Accuracy (relative vs. absolute error)
• Roundoff vs. Truncation
Due to limitations in computer arithmetic, need to practice
“defensive coding”.
• Mathematicsnumerics + 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?Text
APPENDIX
• NUMERICAL MONSTERS:
a collection of curious phenomena
exhibited by computations at the
limit of machine precision
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
Pet Monster I )21ln(2)( xxxT
50 50.5 51 51.5 52 52.5 53 53.5 54 54.5 55-2
-1.5
-1
-0.5
0
0.5
1
1.5
2plot of f1=2xlog(1+2-x) with f2 = 2xlog(1-2-x)
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)
top related