I am working on stochastic differential equations for the first time. I am looking to simulate and solve a stochastic differential equations in two dimensions.
The model is as follows:
dp=F(t,p)dt+G(t,p)dW(t)
where:
- p is a 2-by-1 vector: p=(theta(t); phi(t))
- F is a column vector: F=(sin(theta)+Psi* cos(phi); Psi* cot(theta)*sin(phi))
- G is a 2-by-2 matrix: G=(D 0;0 D/sin(theta))
- Psi is a parameter and D is the diffusion constant
I wrote code as follows:
function MDL=gyro_2dim(Psi,D) % want to solve for 2-by-1 vector: %p=[theta;phi]; %drift function F=@(t,theta,phi) [sinth(theta)+Psi.*cos(phi)-D.*cot(theta);Psi.*cot(theta).*sin(phi)]; %diffusion function G=@(t,theta,phi) [D 0;0 D./sin(theta)]; MDL=sde(F,G) end
Then I call the function with the following script:
params.t0 = 0; % start time of simulation params.tend = 20; % end time params.dt =0.1; % time increment D=0.1; nPeriods=10; % # of simulated observations Psi=1; MDL=gyro_2dim(Psi,D); [S,T,Z]=simulate(MDL, nPeriods,'DeltaTime',params.dt); plot(T,S)
When I run the code, I receive this error message:
Drift rate invalid at initial conditions or inconsistent model dimensions.
Any idea how to fix this error?