
Quiero dibujar un movimiento browniano bidimensional o, más generalmente, elEuler-Maruyamasolución discretizada de una ecuación diferencial estocástica bidimensional (SDE)adentroun circulo.
Si lo hice bien, esto debería ser posible usando pgfplots
y tikz
. Enesta publicación, al menos se muestra cómo se puede trazar un movimiento browniano. Ahora "simplemente" necesito generalizar esto a un solucionador SDE simple (lo cual es difícil para mí, ya que en este punto el código pgfplots/tikz es bastante oscuro para mí y no tengo mucho tiempo para leerlo)ydescubre cómo se puede colocar el dibujo dentro de un círculo. La gráfica debe escalar con el radio del círculo. Y necesitaré colocar varios círculos con diferentes soluciones SDE dentro de una sola figura, si eso es importante.
Ojalá la solución sea fácil. Puedo proporcionar más información si es necesario. Una referencia a una guía donde se muestre lo que estoy preguntando ya sería de gran ayuda.
Respuesta1
\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}
\newcommand{\Emmett}[5]{% points, advance, rand factor, options, end label
\draw[#4] (0,0)
\foreach \x in {1,...,#1}
{ -- ++(#2, rand*#3)
}
node[right] {#5};
}
\foreach \r [count=\i] in {2.2,2.1,...,0.6}{
\begin{scope}[shift={(50*\i:{4*sin(70*\i)})}]
\pgfmathparse{0.9*rnd+0.3}
\definecolor{MyColor}{rgb}{\pgfmathresult,\pgfmathresult,\pgfmathresult}
\filldraw[fill=MyColor] (\r,0) circle[radius=\r];
\clip (\r,0) circle[radius=\r];
\Emmett{int(300*\i)}{0.04}{0.02*\i}{red}{}
\end{scope}
}
\end{tikzpicture}
\end{document}
Editar:
\documentclass[tikz, border=1cm]{standalone}
\begin{document}
\begin{tikzpicture}[line join=bevel]
\foreach \r [count=\i] in {1,1.4,...,2.2}{
\begin{scope}[shift={(5*\i,0)}]
\filldraw[blue, fill=black!20] (0,0) circle[radius=\r];
\clip (0,0) circle[radius=\r];
\draw[red, scale=\r] (0,0) coordinate(start) \foreach \x in {1,...,1000} { -- ++(0.05*rand, 0.05*rand)} coordinate(end);
\fill (start) circle[radius=2pt] node[above]{$X_0$};
\fill (end) circle[radius=2pt] node[above]{$X_t$};
\end{scope}
}
\end{tikzpicture}
\end{document}
rand
es un nuevo número pseudoaleatorio cada vez. -- ++(dx,dy)
significa dibujar una línea hasta una nueva coordenada que sea dx
mayor en x y dy
mayor en y. -y finalmente tener esta nueva coordenada como inicio de, por ejemplo, líneas adicionales.