I want to obtain the position x[t], solution of dx/dt=v and v the Orstein-Ulhenbeck process and use this x[t] in the cartesian coordinate definition of a stochastic spiral x_1(t)=tcos(t+x(t)) , x_2(t)=tsin(t+x(t)). I want to extract x[t] from the whole process vwin to pass it on to the process x12. Any Help?

the code I have is

 {a, b} = {-1, 0.1};

vwin = ItoProcess[{\[DifferentialD]v[t] == -100*
       v[t] \[DifferentialD]t + \[DifferentialD]w[
        t], \[DifferentialD]x[t] == v[t] \[DifferentialD]t}, {v[t], 
    x[t]}, {{v, x}, {2, 1}}, t, w \[Distributed] WienerProcess[]];
RandomFunction[win, {0., 2., 0.001}];
ListLinePlot[%, Filling -> Axis]

X12 = TransformedProcess[{t*Cos[a*t + b*x[t]], 
    t*Sin[a*t + b*x[t]]}, {x \[Distributed] vwin}, t];
X12D = RandomFunction[X12, {0, 1.3, 0.005}, 30];

ListLinePlot[X12D["ValueList"], PlotRange -> All]

There should be some way to do this with TransformedProcess (see here) but I couldn't get it to work with your bivariate process.

Instead, maybe you could solve for 30 replicates of x[t], then transform them manually in your plot:

vwin = ItoProcess[{
  \[DifferentialD]v[t] == -100* v[t] \[DifferentialD]t + \[DifferentialD]w[t],
  \[DifferentialD]x[t] == v[t] \[DifferentialD]t},
  {v[t], x[t]}, {{v, x}, {2, 1}}, t, w \[Distributed] WienerProcess[]];
dat = RandomFunction[vwin, {0., 1.3, 0.005}, 30];

  {t*Cos[a*t + b*dat["SliceData", t][[path, 1]]], 
   t*Sin[a*t + b*dat["SliceData", t][[path, 1]]]}
  , {path, 30}, {t, 0., 1.3, 0.005}]]

Mathematica graphics

  • $\begingroup$ TY. It is a possibility. What I am trying to figure out is to transform only one piece of the solution, say x(t) in x(t),v(t). I ll continue to do a bit of search as suggested and let run the question. cheers Nic $\endgroup$ Apr 12 '20 at 15:24
  • $\begingroup$ @NicolasBian Yeah it's not obvious how to transform only part of the ItoProcess, would be nice to know $\endgroup$
    – Chris K
    Apr 12 '20 at 15:37

You could define the ItoProcess to just return x[t] instead of both x and v. E.g., replace vwin and X12 with

xproc = ItoProcess[\[DifferentialD]x[t] == v[t] \[DifferentialD]t, x[t], {x, 1}, t, v \[Distributed] OrnsteinUhlenbeckProcess[0, 1, 5, 2]];

X12 = TransformedProcess[{t*Cos[a*t + b*x[t]], t*Sin[a*t + b*x[t]]}, x \[Distributed] xproc, t];
  • $\begingroup$ Thanks for your answer. It is sound. But would not work if the O-U was not predefined. I let the question run for a while. TY $\endgroup$ Apr 12 '20 at 15:20

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.