Transcript
Page 1: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

The Profiler Preallocate arrays Vectorize the operation MEX

Matlab

March 26, 2013

Page 2: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Matlab

A numerical computing environment and fourth-generationprogramming language.

Matrix manipulations, Plotting of functions and data, Implementationof algorithms, Creation of user interfaces, Interfacing with programswritten in other languages, including C, C++, Java, and Fortran

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 2 / 30

Page 3: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Display Windows

Command WindowEnter commands after the ”>>” symbolResults show here

Command History Window display commands used.

Windows which list all the variables you are using.

Graphic (Figure) WindowDisplays plots and graphsCreated in response to graphics commands.

M-file editor/debugger windowCreate and edit scripts of commands called M-files.

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 3 / 30

Page 4: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Getting Help

Type one of the following commands in the command window.

helpList all the help topics

help commandProvides help for the specified command

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 4 / 30

Page 5: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Basic Commands:

for FOR variable = expr, statement, ..., statement END

if IF expression

statements

ELSEIF expression

statements

ELSE

statements

END

while WHILE expression

statements

END

switch SWITCH switch_expr

CASE case_expr,

statement, ..., statement

CASE {case_expr1, case_expr2, case_expr3,...}

statement, ..., statement

...

OTHERWISE,

statement, ..., statement

END

Plotting Commands:

x, y, z : vectors

plot(x,y) : 2-d plot

mesh(x, y, z) 3-d plot xlabel(’label for x axis’)

title(’plot title’)

2

Page 6: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Vectors & Matrix

Create a vector(or Matrix)>> a=[0 2 4 6 8 10]>> a=0:2:10>> A=[1 2 3; 4 5 6; 7 8 9]>> eye(n)

Matrix operations+, -, *.*inv(A)A.^p

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 5 / 30

Page 7: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

MA/STAT 598W Lecture 1: MATLAB

Basics:

A = [1, 2, 3; 3, 4, 5; 5, 6, 7 ] Matrix Definition

A (1, 2) (1,2)-element

A (1, 2:end) First line, elements from 2 - end

Aˆ2 A square

A + 2 Adds 2 to all the elements of A

A.̂ 2 Squares each element of A

A’ Transpose of A

diag (A) Diagonal of A

triu (A) Upper triangular part of A

rank(A) Rank of A

inv(A) Inverse of A

eig(A) Eigenvalues of A

zeros(n,m) nxm matrix of zeros

ones(n,m) nxm matrix of ones

eye(n) nxn Identity matrix

A±B Matrix addition/subtraction

A*B Matrix multiplication

A.*B Element-by-element multiplication

a = 1:n Vector with elements from 1 to n

b = 1:k:n Vector with elements from 1 to n with step k

1

Page 8: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Solutions to systems of linear equations

Example: a system of 3 linear equations with 3 unknows.

3x1 + 2x2 � x3 = 10

�x1 + 3x3 + 2x3 = 5

x1 � x3 � x3 = �1

(1)

>> A=[3 2 -1; -1 3 2;1 -1 -1];

>> b=[10; 5; -1];

>> x=inv(A)*b

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 6 / 30

Page 9: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

The Profiler Preallocate arrays Vectorize the operation MEX

Vectorized Computations

MATLAB is specifically designed to operate on vectors andmatrices, so it is usually quicker to perform operations on vectorsor matrices, rather than using a loop. For example:tic;index=0;for time=0:0.001:60000;index=index+1;waveForm(index)=cos(time);end;toc;Elapsed time is 17.873571 seconds.

tic;time=0:0.001:60000;waveForm=cos(time);tocElapsed time is 1.145038 seconds.

Page 10: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

The Profiler Preallocate arrays Vectorize the operation MEX

Vectorized Computations with per-element operators

function d = minDistance(x,y,z)%find the distance between a set of points and the originnPoints = length(x);d = zeros(nPoints,1); % Preallocatefor k = 1:nPoints % Compute distance for every pointd(k) = sqrt(x(k)2 + y(k)2 + z(k)2);endd = min(d); % Get the minimum distance

Vectorize the code by:d = sqrt(x .^2 + y .^2 + z .^2);

Page 11: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

The Profiler Preallocate arrays Vectorize the operation MEX

Some useful operations for vector

any() ) returns true if any element is non-zero.

size() ) returns a vector containing the number of elementsin an array along each dimension

find() ) returns the indices of any non-zero elements. To getthe non-zero values themselves you can use something likea(find(a))

cumsum() ) returns a vector containing the cumulative sumof the elements in its argument vector, e.g. cumsum([0:5])returns [0 1 3 6 10 15].

sum() ) returns the sum of all the elements in a vector, e.g.sum([0:5]) returns 15.

min, max, repmat, meshgrid, di↵, prod, cumprod, accumarray.

Page 12: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

The Profiler Preallocate arrays Vectorize the operation MEX

Vectorized Logic

>> [1,5,3] < [2,2,4]ans = 1 0 1>> find([1,5,3] < [2,2,4]) % Find indices of nonzero elementsans = 1 3>> any([1,5,3] < [2,2,4])% True if any element of a vector isnonzero (or per-column for a matrix)ans = 1>> all([1,5,3] < [2,2,4]) %True if all elements of a vector arenonzero (or per-column for a matrix)ans = 0

Vectorized logic also works on arrays.>> find(eye(3) == 1) % Find which elements == 1 in the 3x3identity matrixans = 1 5 9 % (element locations given as indices)

Page 13: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Functions

MATLAB functions are similar to C functions.

MATLAB programs are stored as plain text in m-files. Each m-filecontains exactly one MATLAB function. Thus, a collection ofMATLAB functions can lead to a large number of relatively small files.

function [y1,...,yN] = myfun(x1,...,xM)

Exercise: Return the sum and di↵erence of two variables

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 7 / 30

Page 14: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

The Profiler Preallocate arrays Vectorize the operation MEX

Inlining Simple Functions

Every time an M-file function is called, the Matlab interpreterincurs some overhead. Additionally, many M-file functions beginwith conditional code that checks the input arguments for errors ordetermines the mode of operation.Example:y = zeros(size(x)); % Preallocatefor k = 3:length(x)-2

y(k) = median(x(k-2:k+2));end

Inlining a function means to replace a call to the function with thefunction code itself. The median function can be inclined.

tmp = sort(x(k-2:k+2));y(k) = tmp(3);

Page 15: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Matlab Programing Example

ReferenceAn Algorithmic Introduction to the Numerical Simulation of StochasticDi↵erential Equations

AuthorDesmond J. Higham

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 8 / 30

Page 16: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Simulation of Brownian motion

W(0)=0 with Probability 1

W

j

= W

j�1 + dW

j

, j = 1, 2, . . . ,N (2)

Each dWj is an independent random variable of the formp�tN(0, 1)]

random number generator randn – each call to randu produces an”pseudorandom” number

Notice: Matlab starts arrays from index 1 and not index 0.

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 9 / 30

Page 17: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Simulation of Brownian motion

%BPATH1 Browniam path simulation

randn(’state’,100) % set the state of randnT=1; N=500; dt=T/N;dW=zeros(1,N); % preallocate arraysW=zeros(1,N); % for e�ciency

dW(1)=sqrt(dt)*randn; % first approximation outside the loopW(1)=dW(1); % since W(0)=0 is not allowedfor j=2:NdW(j)=sqrt(dt)*randn; % general incrementW(j)=W(j-1)+dW(j);

end

plot([0:dt:T],[0,W],’r-’); %plot W against txlabel(’t’,’FomtSize’,16)ylabel(’W(t),’FontSize’,16,’Rotation’,0)

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 10 / 30

Page 18: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Simulation of Brownian motion:vectorized

Instead of loop, we can perform the same computation more elegantlyand e�ciently using higher level ”vectorized” commands.

Function randn(i,N) creates a 1-by-N array of independent N(0,1)samples.

Function cumsum() computes the cummulative sum of its argument.

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 11 / 30

Page 19: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Simulation of Brownian motion:vectorized

%BPATH2 Brownian path simulation: vectorized

randn(’state’,100) % set the state of randnT = 1; N = 500; dt = T/N;

dW = sqrt(dt)*randn(1,N); % incrementsW = cumsum(dW); % cumulative sum

plot([0:dt:T],[0,W],’r-’) % plot W against txlabel(’t’,’FontSize’,16)ylabel(’W(t)’,’FontSize’,16,’Rotation’,0)

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 12 / 30

Page 20: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Approximation of Stochastic integrals

Given a suitable function h, consider two sums

Ito integralN�1X

i=0

h(tj

)(W (tj+1)�W (t

j

)) (3)

Stratonovich integral

N�1X

i=0

h(t

j

+ t

j+1

2)(W (t

j+1)�W (tj

)) (4)

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 13 / 30

Page 21: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Example when h = W

%STINT Approximate stochastic integrals%% Ito and Stratonovich integrals of WdW

randn(state,100) % set the state of randnT = 1; N = 5 0; dt = T/N;

dW = sqrt(dt)*randn(1,N); % incrementsW = cumsum(dW); % cumulative sum

ito = sum([0,W (1 : end � 1)]. ⇤ dW )strat = sum((0.5 ⇤ ([0,W (1 :end � 1)] +W ) + 0.5 ⇤ sqrt(dt) ⇤ randn(1,N)). ⇤ dW )

itoerr = abs(ito � 0.5 ⇤ (W (end)^2� T ))straterr = abs(strat � 0.5 ⇤W (end)^2)

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 14 / 30

Page 22: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Euler-Maruyama Method

A SDE is given by

Integral form

X (t) = X0 +

Zt

0f (X (s))ds +

Zt

0g(X (s))dW (s), 0 t T . (5)

Or di↵erential equation form

dX (t) = f (X (t))dt + g(X (t))dW (t), X (0) = X0, 0 t T .(6)

The Euler-Maruyama(EM) method takes the form

X

j

= X

j�1+f (Xj�1)�t+g(X

j�1)(W (⌧j

)�W (⌧j�1)), j = 1, 2, . . . , L.

(7)

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 15 / 30

Page 23: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Euler-Maruyama Method

Example: f (X ) = �X and g = µX

dX (t) = �X (t)dt + µX (t)dW (t) (8)

The exact solution to this SDE is

X (t) = X (0)exp((�� 1

2µ2)t + µW (t)) (9)

� = 2, µ = 1 and X(0)=1

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 16 / 30

Page 24: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Euler-Maruyama Method

%EM Euler-Maruyama method on linear SDE%% SDE is dX = lambda ⇤ Xdt +mu ⇤ XdW , 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 R ⇤ dt.

randn(state,100)lambda = 2; mu = 1; Xzero = 1; % problem parametersT = 1;N = 2^8; dt = 1/N;dW = sqrt(dt) ⇤ randn(1,N); % Brownian incrementsW = cumsum(dW); % discretized Brownian pathXtrue = Xzero ⇤ exp((lambda� 0.5 ⇤mu

^2) ⇤ ([dt : dt : T ]) +mu ⇤W );plot([0:dt:T],[Xzero,Xtrue],’m-’), hold on

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 17 / 30

Page 25: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Euler-Maruyama Method

R = 4;Dt = R ⇤ dt; L = N/R ; % L EM steps of size Dt = R*dtXem = zeros(1,L); % preallocate for e�ciencyXtemp = Xzero;for j = 1:LWinc = sum(dW (R ⇤ (j � 1) + 1 : R ⇤ j));Xtemp = Xtemp + Dt ⇤ lambda ⇤ Xtemp +mu ⇤ Xtemp ⇤Winc ;Xem(j) = Xtemp;

end

plot([0:Dt:T],[Xzero,Xem],’r–*’), hold o↵xlabel(’t’,’FontSize’,12)ylabel(’X’,’FontSize’,16,’Rotation’,0,’HorizontalAlignment’,’right’)

emerr = abs(Xem(end)� Xtrue(end))

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 18 / 30

Page 26: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Strong Convergence of the EM Method

A method is said to have strong order of convergence equal to � if thereexists a constant C such that

E |Xn

� X (⌧)| C�t

� (10)

for any fixed ⌧ = n�t 2 [0,T ] and �t e�ciently small.

We lete

Strong

�t

:= E |XL

� X (T )|, L�t = T (11)

The inequality (10) is equivalent to

e

Strong

�t

C�t

� (12)

for su�ciently small �t.

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 19 / 30

Page 27: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Strong Convergence of the EM Method

Let’s look at the Strong convergence of EM for the SDE in our lastexample em.m with order � = 1/2.

Step 1: Compute 1000 di↵erent discretized Brownian paths over [0,1]with �t = 2�9.

Step 2: For each path, EM is applied with 5 di↵erent stepsize:�t = 2p�1�t for 1 p 5.

Step 3: Compute the endpoint error in the sth sample path for thepth stepsize and store it in Xerr(s,p)

Step 4: mean(Xeer(s,p)) will give us the approximation to e

Strong

�t

for5 di↵erent stepsize.

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 20 / 30

Page 28: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Strong Convergence of the EM Method

If the inequality holds with approximation equality, then, taking logs, wehave

log eStrong�t

⇡ logC + 1/2 log�t (13)

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 21 / 30

Page 29: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Strong Convergence of the EM Method

%EMSTRONG Test strong convergence of Euler-Maruyama%% Solves dX = lambda ⇤ Xdt +mu ⇤ XdW , X(0) = Xzero,% where lambda = 2, mu = 1 and Xzer0 = 1.%% Discretized Brownian path over [0,1] has dt = 2^ � 9.% E-M uses 5di↵erent timesteps: 16dt, 8dt, 4dt, 2dt, dt.% Examine strong convergence at T = 1 : E |X

L

� X (T )|.

randn(state,100)lambda = 2; mu = 1; Xzero = 1; % problem parametersT = 1; N = 2^9; dt = T/N;M = 1000; % number of paths sampled

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 22 / 30

Page 30: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Strong Convergence of the EM Method

Xerr = zeros(M,5); % preallocate arrayfor s = 1:M, % sample over discrete Brownian pathsdW = sqrt(dt) ⇤ randn(1,N); % Brownian incrementsW = cumsum(dW); % discrete Brownian pathXtrue = Xzero ⇤ exp((lambda� 0.5 ⇤mu

^2) +mu ⇤W (end));for p = 1:5R = 2(p � 1);Dt = R ⇤ dt; L = N/R ;Xtemp = Xzero;for j = 1:LWinc = sum(dW (R ⇤ (j � 1) + 1 : R ⇤ j));Xtemp = Xtemp + Dt ⇤ lambda ⇤ Xtemp +mu ⇤ Xtemp ⇤Winc ;

endXerr(s, p) = abs(Xtemp � Xtrue); % store the error at t = 1

endend

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 23 / 30

Page 31: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Strong Convergence of the EM Method

Dtvals = dt ⇤ (2.^([0 : 4]));loglog(Dtvals,mean(Xerr),0 b ⇤ �0); hold onloglog(Dtvals, (Dtvals.^(.5)),0 r ��0); hold o↵ % reference slope of 1/2axis([1e-3 1e-1 1e-4 1])xlabel(’\Delta t’);ylabel(’Sample average of|X (T )� X

L

|’)title(emstrong.m,FontSize,10)

%%%% Least squares fit of error = C ⇤ Dtq %%%%A = [ones(5, 1), log(Dtvals)]; rhs = log(mean(Xerr));sol = A \rhs; q = sol(2)resid = norm(A ⇤ sol � rhs)

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 24 / 30

Page 32: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Weak Convergence of the EM Method

A method is said to have weak order of convergence equal to � if thereexists a constant C such that for all functions p in some class

|Ep(Xn

)� Ep(X (⌧))| C�t

� (14)

for any fixed ⌧ = n�t 2 [0,T ] and �t e�ciently small. We focus on thecase where p is identity function

We lete

Weak

�t

:= |EXL

� EX (T )|, L�t = T (15)

The inequality (14) is equivalent to

e

Weak

�t

C�t

� (16)

for su�ciently small �t.

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 25 / 30

Page 33: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Weak Convergence of the EM Method

Let’s look at the Weak convergence of EM for the SDE in our lastexample em.m with order � = 1.

Step 1: Compute 1000 di↵erent discretized Brownian paths over [0,1]with �t = 2�9.

Step 2: For each path, EM is applied with 5 di↵erent stepsize:�t = 2p�1�t for 1 p 5.

Step 3: Compute the endpoint error in the sth sample path for thepth stepsize and store it in Xerr(s,p)

Step 4: mean(Xeer(s,p)) will give us the approximation to e

Strong

�t

for5 di↵erent stepsize.

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 26 / 30

Page 34: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Weak Convergence of the EM Method

If the inequality holds with approximation equality, then, taking logs, wehave

log eStrong�t

⇡ logC + log�t (17)

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 27 / 30

Page 35: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Weak Convergence of the EM Method

%EMWEAK Test weak convergence of Euler-Maruyama%% Solves dX = lambda ⇤ Xdt +mu ⇤ XdW , X(0) = Xzero,% where lambda = 2, mu = 1 and Xzer0 = 1.%% E-M uses 5di↵erent timesteps: 2^(p � 10), p = 1,2,3,4,5.% Examine weak convergence at T = 1 : |E (X

L

)� E (X (T ))|.%% Di↵erent paths are used for each E-M timestep.% Code is vectorized over paths.%% Uncommenting the line indicated below gives the weak E-M method.

randn(state,100);lambda = 2; mu = 0.1; Xzero = 1; T = 1; % problem parametersM = 50000;

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 28 / 30

Page 36: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Weak Convergence of the EM Method

Xem = zeros(5,1); % preallocate arraysfor p =1:5 % take various Euler timestepsDt = 2^(p � 10); L = T/Dt; % L Euler steps of size DtXtemp = Xzero*ones(M,1);for j = 1:LWinc = sqrt(Dt)*randn(M,1)Xtemp = Xtemp + Dt ⇤ lambda ⇤ Xtemp +mu ⇤ Xtemp. ⇤Winc ;

endXem(p) = mean(Xtemp);

endXerr =abs(Xem � exp(lambda));

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 29 / 30

Page 37: Matlab - stat.purdue.edufigueroa/Teaching/Stat541/IntroMatlab... · Matlab A numerical computing environment and fourth-generation programming language. Matrix manipulations, Plotting

Weak Convergence of the EM Method

Dtvals = 2.^([1 : 5]� 10);loglog(Dtvals,Xerr ,0 b ⇤ �0), hold onloglog(Dtvals,Dtvals,0 r ��0), hold o↵ % reference slope of 1axis([1e-3 1e-1 1e-4 1])xlabel(’\Delta t’), ylabel(’|E (X (T ))� Sample average of X

L

|’)title(’emweak.m’,’FontSize’,10)

%%%% Least squares fit of error = C ⇤ dtq %%%%A = [ones(p, 1), log(Dtvals)]; rhs = log(Xerr);sol = A\ rhs; q = sol(2)resid = norm(A*sol - rhs)

Xin Zhang (STAT 598) Lecture 11 March 26th,2013 30 / 30


Top Related