Как нарисовать броуновское движение внутри осевой среды?

Как нарисовать броуновское движение внутри осевой среды?

Я хочу нарисовать стандартное броуновское движение от времени 0 до 1. Основываясь наэтот ответ, я попробовал следующее:

\documentclass{article}

\usepackage{pgfplots, tikz}
\pgfplotsset{compat = newest}

\newcommand{\Emmett}[5] % color, x0, dt, n 
{
    \draw[#1] (0, #2)
    \foreach\x in {1, ..., #4} {
        -- ++(#3, rand * #3)
    }
    node[right] {#5};
}

\begin{document}

\begin{tikzpicture}[>=latex]
    \begin{axis}[
        axis x line = center,
        axis y line = center,
        xtick = {0, ..., 1},
        ytick = {-1, ..., 1},
        xlabel = {$t$},
        ylabel = {$x$},
        xlabel style = {right},
        ylabel style = {above},
        xmin = 0,
        xmax = 1.1,
        ymin = -1,
        ymax = 1]

        \Emmett{black}{0}{.01}{100}{};
    \end{axis}
\end{tikzpicture}

\end{document}

Выходной сигнал:

введите описание изображения здесь

и, следовательно, что-то явно не так. Я должен признать, что не до конца понимаю макрос \Emmettи, скорее всего, с ним что-то не так. На самом деле код должен делать следующее:

t = 0;
x = x0;

for (i = 0; i < n; ++i)
{
    plot (t, x);

    let xi be a sample from the standard normal distribution;
    x += sqrt(dt) * xi;
}

Итак, как мне настроить макрос? Путь стандартного броуновского движения должен выглядеть примерно так

введите описание изображения здесь

Связанный контент