Cambio de variables de estado para procesos estocásticos generales

por Bruno Tenorio
Este cuaderno es una traducción al español del artículo de la Comunidad Wolfram “Change of state variables for general stochastic processes” producido con ayuda de un LLM y verificado por un traductor profesional
Este cuaderno aborda el problema de cambiar variables en ecuaciones diferenciales estocásticas generales (EDE) tanto para procesos de Stratonovich como de Ito. Utilizamos dos funciones personalizadas para analizar ejemplos clave y aplicaciones físicas, destacando la capacidad de aplicar transformaciones de coordenadas nominales y examinar explícitamente los términos simbólicos resultantes.

Funciones del repositorio de funciones

Con respecto a los detalles de cómo se realizan las transformaciones, se recomienda consultar la documentación de Wolfram Function Repository:
Para procesos de Stratonovich:
In[]:=
ResourceFunction["StratonovichProcessChangeVariables"]
Out[]=
[◼]
StratonovichProcessChangeVariables
Version (latest): 1.0.0
Documentation »
Para procesos de Ito:
In[]:=
ResourceFunction["ItoProcessChangeVariables"]
Out[]=
[◼]
ItoProcessChangeVariables
Version (latest): 1.0.0
Documentation »

Cambio de variables para un proceso de Stratonovich

Casos de uso

Transformación cuadrática

Defina un proceso de Stratonovich:
In[]:=
procX=StratonovichProcess1
2
x
,σExp[-
2
x
],{x,x0},t
Out[]=
StratonovichProcess
1
2
x[t]
,
-
2
x[t]

σ,x[t],{{x},{x0}},{t,0}
Transformación cuadrática del proceso:
In[]:=
transformed=
[◼]
StratonovichProcessChangeVariables
[procX,y,y==x^2];
Verifique que sea un proceso válido:
In[]:=
ProcessParameterQ[transformed]
Out[]=
True
Imprima los términos transformados de deriva y difusión:
In[]:=
Print["Drift: ",transformed["Drift"],"\nDiffusion: ",transformed["Diffusion"]]
Drift: -
2
y[t]
Diffusion: -2
-y[t]

σ
y[t]


Transformación cúbica de un proceso de Wiener

Comience con un proceso de Stratonovich que tiene una forma de proceso de Wiener:
In[]:=
proc=StratonovichProcess[{0,1},{x,x0},t]
Out[]=
StratonovichProcess[{{0},{{1}},x[t]},{{x},{x0}},{t,0}]
Transformación cúbica de un proceso:
In[]:=
[◼]
StratonovichProcessChangeVariables
[proc,y,y==x^3]
Out[]=
StratonovichProcess{0},3
2/3
y[t]
,y[t],{{y},{
3
x0
}},{t,0}

Escalado temporal

Comience con un proceso general con deriva a y difusión b:
In[]:=
spLinear=StratonovichProcess[{a,b},{x,x0},{t,t0}]
Out[]=
StratonovichProcess[{{a},{{b}},x[t]},{{x},{x0}},{t,t0}]
Escalado de variables de proceso:
In[]:=
resTimeDep=
[◼]
StratonovichProcessChangeVariables
spLinear,{y},y
x
t

Out[]=
StratonovichProcess
a-y[t]
t
,
b
t
,{y[t]},{y},
x0
t0
,{t,0}

Proceso de deriva cero a partir de Ornstein-Uhlenbeck

Defina el siguiente proceso de OrnsteinUhlenbeck:
In[]:=
ou=StratonovichProcess@OrnsteinUhlenbeckProcess[μ,σ,θ,x0]
Out[]=
StratonovichProcessθμ-x.t.,{{σ}},x.t.,{x.},{x0},t.,0
Considere la transformación y =
θt
ⅇ
(x-μ) que depende del tiempo:
In[]:=
transformed=
[◼]
StratonovichProcessChangeVariables
ou,y,y
θt.

(x.-μ);
Compruebe que el proceso no tenga deriva para esta transformación:
In[]:=
transformed["Drift"]=={0}
Out[]=
True

Transformación tangente/Cauchy

Comience con un proceso de Stratonovich que tenga la forma de un proceso de Wiener:
In[]:=
procX=StratonovichProcess[{0,1},{x,0},t];
Realice la transformación
y=Tan(x)
:
In[]:=
[◼]
StratonovichProcessChangeVariables
[procX,y,y==Tan[x]]
Out[]=
StratonovichProcess[{{0},{{
2
Sec[ArcTan[y[t]]+π

1
]
}},y[t]},{{y},{0}},{t,0}]
Especifique una rama de solución para
0<=x<2π
:
In[]:=
procY=
[◼]
StratonovichProcessChangeVariables
[procX,y,y==Tan[x],Assumptions->{0<=x<2π}]
Out[]=
StratonovichProcess[{{0},{{1+
2
y[t]
}},y[t]},{{y},{0}},{t,0}]

Coordenadas cilíndricas a esféricas

Defina un proceso en coordenadas cilíndricas:
In[]:=
proc3D=StratonovichProcess[{{1/ρ,0,0},{σ/(ρ^2+z^2),0,σz}},{{ρ,ϕ,z},{ρ0,ϕ0,z0}},t]
Out[]=
StratonovichProcess
1
ρ[t]
,0,0,
σ
2
z[t]
+
2
ρ[t]
,{0},{σz[t]},{ρ[t],ϕ[t],z[t]},{{ρ,ϕ,z},{ρ0,ϕ0,z0}},{t,0}
Realice una transformación a coordenadas esféricas usando la notación de nombres largos:
In[]:=
[◼]
StratonovichProcessChangeVariables
proc3D,r,θ.,φ,{"Cylindrical","Euclidean",3}->{"Spherical","Euclidean",3}
Out[]=
StratonovichProcess
1
r[t]
,
Cotθ.[t]
2
r[t]
,0,σ
2
Cosθ.[t]
r[t]+
σSinθ.[t]
2
r[t]
,σCosθ.[t]
1
3
r[t]
-Sinθ.[t],{0},r[t],θ.[t],φ[t],r,θ.,φ,
2
z0
+
2
ρ0
,ArcTan[z0,ρ0],ϕ0,{t,0}

Aplicaciones de física

Movimiento de atrapamiento estocástico en 2D

Define a stochastic process representing harmonic oscillator trap(including a magnetic effect) in Cartesian coordinates:
Defina un proceso estocástico que represente una trampa de oscilador armónico (incluyendo un efecto magnético) en coordenadas cartesianas:
In[]:=
spMagnetic=StratonovichProcess[{{-γx+By,-γy-Bx},{{σ,0},{0,σ}}},{{x,y},{x0,y0}},t]
Out[]=
StratonovichProcess[{{-γx[t]+By[t],-Bx[t]-γy[t]},{{σ,0},{0,σ}},{x[t],y[t]}},{{x,y},{x0,y0}},{t,0}]
Cambie a coordenadas polares que sean más adecuadas para el problema:
In[]:=
spPolar=
[◼]
StratonovichProcessChangeVariables
[spMagnetic,{r,ϕ},"Cartesian"->"Polar"]
Out[]=
StratonovichProcess{-γr[t],-B},{σCos[ϕ[t]],σSin[ϕ[t]]},-
σSin[ϕ[t]]
r[t]
,
σCos[ϕ[t]]
r[t]
,{r[t],ϕ[t]},{r,ϕ},
2
x0
+
2
y0
,ArcTan[x0,y0],{t,0}
Configure los parámetros y simule 5 trayectorias:
In[]:=
paths=RandomFunction[spPolar/.{γ->0.5,B->2,σ->0.2,x0->1.5,y0->1.5},{0,20,0.01},5];
Vuelva a las coordenadas cartesianas para representar:
In[]:=
cartesianPaths=TimeSeriesMap[{#[[1]]Cos[#[[2]]],#[[1]]Sin[#[[2]]]}&,paths];
Represente las trayectorias:
In[]:=
ListLinePlotcartesianPaths["ValueList"],

Out[]=

Flujo celular con difusión

Defina un proceso de Stratonovich que represente el flujo de partículas especificado por la deriva con fluctuaciones térmicas añadidas:
Visualice el diagrama de flujo del desplazamiento:
Representación de líneas de corriente de deriva u-v transformadas:
Visualice 10 trayectorias en el espacio u-v:

Cambio de variables para un proceso de Ito

Casos de uso

Transformada logarítmica de un proceso de movimiento browniano geométrico

Construya un proceso de Ito a partir de un proceso estocástico de movimiento browniano:
Obtenga el movimiento browniano aritmético mediante una transformación logarítmica:
Muestre la FDP del proceso:

Transformación exponencial

Defina un proceso de Ito que represente un proceso de Wiener:
Realice una transformación exponencial:
Media y varianza del proceso:
Podemos obtener un resultado equivalente para la media y la varianza del proceso usando TransformedProcess:

Desplazamiento de la media en un proceso de Ornstein-Uhlenbeck

Defina el proceso de OrnsteinUhlenbeck:
Calcule la media y la varianza del proceso:
Verifique la media y la varianza; la media se desplazó, pero el proceso sigue siendo OrnsteinUhlenbeck:
Usando TransformedProcess:

Coordenadas polares

Comience con un proceso de Wiener bidimensional:
Transforme el proceso a coordenadas polares. Observamos que la deriva inicial nula se vuelve no nula y depende únicamente del radio en coordenadas polares:

Transformación dependiente del tiempo

Cree un proceso de Ito en particular:
Transformación explícita dependiente del tiempo:

Cambio de variable tangente hiperbólica

Comience con un proceso sin deriva:

Transformada del coseno

Defina un proceso de Wiener unidimensional:
Realice un cambio trigonométrico de variables, ya que debido a la naturaleza periódica de la transformación no es posible obtener una solución única:

Aplicaciones de física

Oscilador armónico con ruido

Defina un proceso que represente la posición y la velocidad de una partícula, donde la deriva en la velocidad está relacionada con la posición (como en la ley de Hooke). Con difusión agregada solo en la velocidad:
Al transformar a las variables E y ϕ (energía y fase), estamos suponiendo masa unitaria:
Configure los parámetros:
Al representar el retrato de fases, obtenemos trayectorias circulares deformadas:
Si visualizamos las trayectorias en el espacio de energía-fase utilizando los mismos parámetros, la línea discontinua representa la energía sin ruido:

Difusión del estado cuántico

Realice el cambio de variables a coordenadas esféricas, que son más apropiadas para la geometría del espacio de estados:
Calcule las trayectorias del vector de Bloch en coordenadas cartesianas:
Las probabilidades cuánticas según la regla de Born pueden obtenerse con un histograma de la componente z del vector de Bloch para muchas trayectorias, suponiendo que el tiempo sea lo suficientemente largo como para producir el colapso al estado propio

CITE ESTE CUADERNO

Cambio de variables de estado para procesos estocásticos generales​
por Bruno Tenorio​
Comunidad Wolfram, STAFF PICKS, 20 de enero de 2026
​https://community.wolfram.com/groups/-/m/t/3609731