A standard Wiener process (often called Brownian motion) on the interval
is a random variable
that depends continuously on
and satisfies the following:
For use on a computer, we discretize the Wiener process with a timestep
as
The article by Higham gives two equivalent Matlab programs to calculate a realization of a Wiener process. First bpath1.m:
%BPATH1 Brownian path simulation
randn('state',100) % set the state of randn
T = 1; N = 500; dt = T/N;
dW = zeros(1,N); % preallocate arrays ...
W = zeros(1,N); % for efficiency
dW(1) = sqrt(dt)*randn; % first approximation outside the loop ...
W(1) = dW(1); % since W(0) = 0 is not allowed
for j = 2:N
dW(j) = sqrt(dt)*randn; % general increment
W(j) = W(j-1) + dW(j);
end
plot([0:dt:T],[0,W],'r-') % plot W against t
xlabel('t','FontSize',16)
ylabel('W(t)','FontSize',16,'Rotation',0)
Next bpath2.m:
%BPATH2 Brownian path simulation: vectorized
randn('state',100) % set the state of randn
T = 1; N = 500; dt = T/N;
dW = sqrt(dt)*randn(1,N); % increments
W = cumsum(dW); % cumulative sum
plot([0:dt:T],[0,W],'r-') % plot W against t
xlabel('t','FontSize',16)
ylabel('W(t)','FontSize',16,'Rotation',0)
These programs produce Figure 1.