Darstellung einer Brownschen Bewegung mit gestrichelter Linie, die die Werte angibt

Darstellung einer Brownschen Bewegung mit gestrichelter Linie, die die Werte angibt

Ich möchte ein Diagramm erstellen, das in LaTeX (entweder über TikZ oder etwas anderes) dem untenstehenden ähnelt. Ich habe bereits eine Methode gefunden, um den Brownschen Pfad darzustellen. Ich weiß jedoch nicht, wie ich die gestrichelten Linien hinzufügen kann, die im Bild unten gezeigt sind. Diese Linien werden erstellt, wenn der Brownsche Pfad einen bestimmten Wert erreicht, und die Beschriftungen bestehen aus Buchstaben statt Zahlen. Vielen Dank!

Ein Beispiel

Die Methode zum Zeichnen des Brownschen Pfades, die ich gefunden habe, ist folgende: So zeichnen Sie Brownsche Bewegungen in Tikz/PGF

Ich muss keine Ober- oder Untergrenze hinzufügen, wie in den Antworten in diesem Link. Aber ich muss für einige bestimmte Werte einige gestrichelte Linien hinzufügen.

Antwort1

Hier ist ein Versuch mitMetaposteingewickelt inluamplib. Kompilieren Sie mit lualatex, folgen Sie den Links für weitere Details.

Bildbeschreibung hier eingeben

\RequirePackage{luatex85}
\documentclass[border=5mm]{standalone}
\usepackage{luamplib}
\begin{document}
\mplibtextextlabel{enable}
\begin{mplibcode}
beginfig(1);

% set a seed, so it is repeatable (it will work fine if you 
% delete this, but you will get a different path...)
randomseed := 1288.27463;

numeric a, u, v, wt, N, hi, lo;
% parameters
a = 0;
N = 100;
lo = -hi = infinity;
wt = 2/5; % weight - larger = more random

% scales
u = 1mm; % scale
v = 1cm;

% make the brownian path, keeping track of the hi and lo points
% you could use uniformdeviate or calculate a more complicated
% distribution here instead of "normaldeviate"
path A;
A = (origin for t=1 upto N: 
        hide( 
            if a>hi: hi := a; fi if a<lo: lo := a; fi 
            a := a + wt * normaldeviate; 
        )
        -- (t,a) 
     endfor) xscaled u yscaled v;

% draw in the axes nicely
drawoptions(withcolor 1/2 white);
draw ((0,lo)--(0,hi)) scaled v;
for i=ceiling(lo) upto floor(hi) : 
    draw (left--right) scaled 2 shifted (0,i*v);
    label.lft("$" & decimal i & "$", (0,i*v)); 
endfor
draw (origin--right) scaled (N*u);

% draw the markers at the desired points along the brownian motion path
drawoptions(dashed evenly scaled 1/2 withcolor 2/3 blue);

z0 = point 44 of A; 
draw (x0,-16) -- z0 -- (-16,y0); 
label.bot("$T_0$", (x0,-16));
label.lft("$M_0$", (-16,y0));

z1 = point 81 of A; 
draw (x1,-16) -- z1 -- (-16,y1); 
label.bot("$T_1$", (x1,-16));
label.lft("$M_1$", (-16,y1));

% etc...

% finally draw the path on top of everything else
drawoptions(withcolor 2/3 red);
draw A;

drawoptions();
endfig;
\end{mplibcode}
\end{document}

verwandte Informationen