Matlab Demos in the Week-2 Lecture

Contents

The codes for the example in page 16 of week-1 lecture

The figure demos the rounding error and truncation error in a finite-difference calculation (see page 16 of sides of lecture 1).

edit fig1_2.m
fig1_2
% codes of fig1_2.m
h=logspace(-16, 0, 33);    % sampling of h
yerr= (sin(1+h)-sin(1))./h; % finite difference
yerr= yerr-cos(1);         % error of finite difference

trunc_err= h/2;            % estimation of truncation error
round_err= eps/2*ones(size(h,1))./h; % estimation of rounding error
% plot the curves
fig=loglog(h, trunc_err, 'k-.', ...
        h, round_err, 'k--', ...
        h, abs(yerr), 'k-', ...
        h, trunc_err+round_err, 'k--');
% set linewidth, axis and ticks for better visibility
set(fig, 'linewidth', 3);
axis([1e-16, 1, 1e-17, 1e1]);
ytick=logspace(-17,1,10);
ytick(1)=1e-17;
set(gca,'xtick',logspace(-16, 0, 9), 'ytick', ytick)

Examples of floating-point numbers in computer

%0.1 can not be precisely store in computer. Here we see the hex format of its machine number.

t= 0.1;
format hex;
t

% The sum of ten 0.1 is not 1.
a=t; for i=1:9, a=a+t; end     % in hex format, 1 is 3ff0000000000000
a

format long
a

% A old formula to show the epsilon machine
x= 1-3*(4/3-1)
t =

   3fb999999999999a


a =

   3fefffffffffffff


a =

   1.000000000000000


x =

    2.220446049250313e-016