2

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]

2 Answers2

1

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];

ListLinePlot[Table[
  {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

Chris K
  • 20,207
  • 3
  • 39
  • 74
  • 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 – Nicolas Bian Apr 12 '20 at 15:24
  • @NicolasBian Yeah it's not obvious how to transform only part of the ItoProcess, would be nice to know – Chris K Apr 12 '20 at 15:37
0

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];
tad
  • 1,875
  • 4
  • 9
  • 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 – Nicolas Bian Apr 12 '20 at 15:20