# Driving a stochastic spiral by a velocity Brownian motion

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

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


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

• 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 Apr 12 '20 at 15:20