% Q19DEMO script displays graphs like those of pg 25 in Demmel. % % Requires: logdq.m % % Usage: >> Q19demo % close all % % Get a logarithmically distributed array of evaluation points. % r = logspace(-16,0,511); x = [fliplr(-r) r]; % symmetric about 0 y = log(1+x) ./ x; % Naive (unstable method) z = logdq(x); % Stable method % subplot(2,2,1) % Upper left corner plot(x,y), grid title('y = log(1+x) / x') % subplot(2,2,2) % Upper right corner plot(x,z), grid title('y = log(1+x) / [(1+x) - 1]') % % Next, zoom in near 0 % r = logspace(-17,-15,257); x = [fliplr(-r) r]; y = log(1+x) ./ x; % Naive (unstable method) z = logdq(x); % Stable method % u = 2*x/eps; % Measure x in units of eps/2 subplot(2,2,3) % Bottom left corner plot(u,y), grid axis([-10 10 -1 3]) xlabel('\times Macheps') title('y = log(1+x) / x') % subplot(2,2,4) % Bottom right corner plot(u,z), grid axis([-10 10 -1 3]) xlabel('\times Macheps') title('y = log(1+x) / [(1+x) - 1]')