期待値を含む多くの軌道を持つブラウン運動プロットを作成する

期待値を含む多くの軌道を持つブラウン運動プロットを作成する

私はベルント・オクセンダルの教科書の表紙にあるブラウン運動の図を再現しようとしています確率微分方程式LaTeX を使用します。

ここに画像の説明を入力してください

コーディングで少し迷っています。数学は必要ありません。似たようなトピックを調べました(ブラウン運動 - 重複) ですが、これらのいずれにもプロット上に E[X_t] 線がありませんでした。また、ブラウン運動の軌跡 (教科書の表紙のプロットとは異なり、一部が負の値になるため) と x 軸および y 軸のラベルをどのように修正すればよいかわかりませんでした。

私の試み

ここに画像の説明を入力してください

    \documentclass[12pt, a4paper]{article} %uploading the libraries
    \usepackage{pgfplots, pgfplotstable}
    \usepackage[font=small,labelfont=bf,labelsep=colon]{caption}
    \begin{document}
    \pgfmathsetseed{5}
    % creating the Brownian motion trajectories
    \pgfplotstablenew[
        create on use/randwalk1/.style={
            create col/expr accum={\pgfmathaccuma + 0.1*rand}{0}
        },
        create on use/randwalk2/.style={
            create col/expr accum={\pgfmathaccuma + 0.1*rand}{0}
        },
        create on use/randwalk3/.style={
            create col/expr accum={\pgfmathaccuma + 0.1*rand}{0}
        },
        create on use/randwalk4/.style={
            create col/expr accum={\pgfmathaccuma + 0.1*rand}{0}
        },
        create on use/randwalk5/.style={
            create col/expr accum={\pgfmathaccuma + 0.1*rand}{0}
        },
        columns={randwalk1,randwalk2,randwalk3,randwalk4,randwalk5}
    ]
    {700}
    % adjusting the plot axes and titles
    \loadedtable
    \begin{figure}[H]
    \caption{Brownian Motion}
    \centering 
    \begin{tikzpicture}
    \begin{axis}[
    legend pos=outer north east,
    axis y line=left, 
    axis x line=middle,
    xlabel= {\scriptsize $t$},
    ylabel = {\scriptsize $X_{t}$},
    ylabel style = {yshift=-12pt},
    xticklabels={,,},
    yticklabels={,,},
    tick style={draw=none},
    line join=bevel,
    no markers,
    table/x expr={\coordindex/100},
    xmin=0,
    ymin=-0.5, ymax=3,
    enlarge x limits=false
   % now, putting it all together
    ]
    \addplot table [y expr={max(\thisrow{randwalk1},-5.0)}] {\loadedtable};
    \addplot table [y expr={min(\thisrow{randwalk2},5.0)}] {\loadedtable};
    \addplot table [y expr={min(\thisrow{randwalk3},5.0)}] {\loadedtable};
    \addplot table [y expr={min(\thisrow{randwalk4},5.0)}] {\loadedtable};
    \addplot table [y expr=\thisrow{randwalk5}] {\loadedtable};
    \draw (axis cs:5,5) (axis cs:5,-5);
    \legend {{\footnotesize $X_t(\omega_1)$}, {\footnotesize $X_t(\omega_2)$}, {\footnotesize  $X_t(\omega_3)$},{\footnotesize  $X_t(\omega_4)$},{\footnotesize  $X_t(\omega_5)$}};
    \end{axis}
    \end{tikzpicture}
    \end{figure}
    \end{document}

答え1

問題は、randでは、pgfに均一に分布した乱数値を生成し[-1,1]、通常の乱数値は生成しないということです。したがって、厳密に言えば、次のコードは GBM をプロットしません。ただし、GBM プロットに似ています。0.003元の図と同様に、軌道が増加する可能性を高めるために、指数にいくらかのドリフトを追加したことがわかります。 はrand均一であるため、 を計算しE(exp(0.003+0.1*rand))=exp(0.003)*5*(exp(0.1)-exp(-0.1))てこの式を使用して期待値をプロットしました。

\documentclass[12pt, a4paper]{article} %uploading the libraries
\usepackage{pgfplots, pgfplotstable}
\usepackage[font=small,labelfont=bf,labelsep=colon]{caption}
\begin{document}
\pgfmathsetseed{5}
% creating the Brownian motion trajectories
\pgfplotstablenew[
    create on use/randwalk1/.style={
      create col/expr accum={\pgfmathaccuma * exp(0.003+0.1*rand)}{1}
    },
    create on use/randwalk2/.style={
      create col/expr accum={\pgfmathaccuma * exp(0.003+0.1*rand)}{1}
    },
    create on use/randwalk3/.style={
      create col/expr accum={\pgfmathaccuma * exp(0.003+0.1*rand)}{1}
    },
    create on use/randwalk4/.style={
      create col/expr accum={\pgfmathaccuma * exp(0.003+0.1*rand)}{1}
    },
    create on use/randwalk5/.style={
      create col/expr accum={\pgfmathaccuma * exp(0.003+0.1*rand)}{1}
    },
    create on use/expectation/.style={
      create col/expr accum={\pgfmathaccuma * exp(0.003)*5*(exp(0.1)-exp(-0.1))}{1}
    },
    columns={randwalk1,randwalk2,randwalk3,randwalk4,randwalk5,expectation}
]
{700}
% adjusting the plot axes and titles
\loadedtable
\begin{figure}[h]
\caption{Brownian Motion}
\centering 
\begin{tikzpicture}
\begin{axis}[
legend pos=outer north east,
axis y line=left, 
axis x line=middle,
xlabel={\scriptsize $t$},
ylabel={\scriptsize $X_{t}$},
ylabel style={yshift=-12pt},
xticklabels={,,},
yticklabels={,,},
tick style={draw=none},
line join=bevel,
no markers,
table/x expr={\coordindex/100},
xmin=0,
ymin=0,
enlarge x limits=false
]
\addplot table [y expr=\thisrow{randwalk1}] {\loadedtable};
\addplot table [y expr=\thisrow{randwalk2}] {\loadedtable};
\addplot table [y expr=\thisrow{randwalk3}] {\loadedtable};
\addplot table [y expr=\thisrow{randwalk4}] {\loadedtable};
\addplot table [y expr=\thisrow{randwalk5}] {\loadedtable};
\addplot table [y expr=\thisrow{expectation}] {\loadedtable};
\draw (axis cs:5,5) (axis cs:5,-5);
\legend {{\footnotesize $X_t(\omega_1)$},
         {\footnotesize $X_t(\omega_2)$},
         {\footnotesize $X_t(\omega_3)$},
         {\footnotesize $X_t(\omega_4)$},
         {\footnotesize $X_t(\omega_5)$},
         {\footnotesize $E[X_t]$}};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}

ここに画像の説明を入力してください

関連情報