%EM Euler-Maruyama method on linear SDE % % SDE is dX = lambda*X dt + mu*X dW, X(0) = Xzero, % where lambda = 2, mu = 1 and Xzero = 1. % % Discretized Brownian path over [0,1] has dt = 2^(-8). % Euler-Maruyama uses timestep dt. randn('state',100) lambda = 2 % problem parameters mu = 1; Xzero = 1; T = 1; N = 2^8; dt = 1/N; dW = sqrt(dt)*randn(1,N); % Brownian increments W = cumsum(dW); % discretized Brownian path Xtrue = Xzero*exp((lambda-0.5*mu^2)*([dt:dt:T])+mu*W); plot([0:dt:T],[Xzero,Xtrue],'m-'), hold on Xem = zeros(1,N); % preallocate for efficiency Xem(1) = Xzero + dt*lambda*Xzero + mu*Xzero*dW(1); for j=2:N Xem(j) = Xem(j-1) + dt*lambda*Xem(j-1) + mu*Xem(j-1)*dW(j); end plot([0:dt:T],[Xzero,Xem],'b--*'), hold off xlabel('t','FontSize',12) ylabel('x','FontSize',16,'Rotation',0,'HorizontalAlignment','right') emerr = abs(Xem(end)-Xtrue(end))