This repository has been archived on 2021-05-17. You can view files and clone it, but cannot push or open issues or pull requests.
scientificComputing/statistics/exercises/randomwalkstatistics.m

59 lines
1.3 KiB
Matlab

p = 0.5;
%% (b)
nwalks = [100 1000, 10000];
for i=1:length(nwalks)
subplot( 3, 1, i );
for k=1:10
x = randomwalk( nwalks(i), p );
plot( x );
hold on;
end
text( 0.05, 0.8, sprintf( 'N=%d', nwalks(i)), 'units', 'normalized' )
xlabel( 'Number of steps' );
ylabel( 'Position' )
hold off;
end
savefigpdf( gcf, 'randomwalk-traces.pdf', 12, 16 );
pause( 5.0 )
nsteps = 100;
nwalks = 10000;
subplot( 1, 1, 1 )
y = zeros( nwalks, nsteps );
for k = 1:nwalks
x = randomwalk( nsteps, p );
y(k,:) = x; % store random walk
end
ns = 1:nsteps;
mu = mean(y, 1);
sdev = std(y, 1);
plot( ns, mu, 'b', 'linewidth', 4 )
hold on
plot( ns, sdev, 'r', 'linewidth', 4 )
xx = 0:0.01:nsteps;
plot( xx, sqrt(xx), 'k' )
plot( xx, zeros(length(xx),1), 'k' )
legend( 'mean', 'std', 'theory' )
xlabel('Steps')
ylabel('Position')
hold off
savefigpdf( gcf, 'randomwalk-stdev.pdf', 6, 5 );
pause( 3.0 );
%% (d) histograms:
tinx = [100, 30, 10];
colors = [ 0 0 1; 0.5 0 0.5; 1 0 0 ];
for i = 1:length(tinx)
[h,b] = hist( y(:,tinx(i)), 20);
h = h/sum(h)/(b(2)-b(1));
bar(b, h, 1.0, 'facecolor', colors(i,:))
hold on;
end
hold off;
xlabel('Position');
ylabel('Probability density');
xlim([-30 30])
ylim([0 0.3])
savefigpdf( gcf, 'randomwalk-hists.pdf', 6, 5 );